Bonjour voilà le but de l'exercice : il demande à l'utilisateur de saisir un nombre, mon algo est censé calculer l'équivalent binaire pour chaque nombre entre 1 et ce nombre, puis de déterminer pour chaque conversion binaire si celle-ci est un palindrome : 1001 est un palindrome et pour chaque binaire déterminé comme palindrome, faire la somme de chaque nombre(non binaire donc).
ex : ou ent est égal à 5 : 1=1
3=11
5=101
1+3+5=9
Voilà pour que ce soit clair, parceque j'étais pas sur que ça soit bien expliqué !
Voilà mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <stdio.h> #include <string.h> int main(void) { int i=1; int j=1; char reste[256]=""; char result[256]=""; int ent=0; char result2[256]={}; int longueur = strlen(result); int resultMul=1; printf("Saisir un nombre: "); scanf("%d", &ent); while(i<ent){ while(i != 0){ sprintf(reste, "%d", j%2); strcat(result, reste); i=i/2; printf("Binaire de %d: %s \n", i, result ); result2[i] += result[longueur-i-1]; printf("%s", result2); if(strcmp(result, result2) ==0){ printf("Le Binaire de %d est un palindrome", i); resultMul += i; i++; } } return 0; } } |
J'ai essayé avec plusieurs combinaisons et généralement soit je tombe sur une boucle infinie :
1 2 | Saisir un nombre: 5 Binaire de 0: 11111111111111111111111111111111111111 etc etc |
ou je tombe sur :
1 2 | Saisir un nombre: 5 Binaire de 0: 1 |
+0
-0