Probleme en C
Fermé
touf_truc
Messages postés
57
Date d'inscription
samedi 21 octobre 2006
Statut
Membre
Dernière intervention
23 avril 2007
-
2 févr. 2007 à 14:44
mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 3 févr. 2007 à 13:38
mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 3 févr. 2007 à 13:38
3 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
2 févr. 2007 à 16:56
2 févr. 2007 à 16:56
Salut.
Il suffit de découper ton nombre (4321) en chiffre et de les écrire à l'envers.
l'algo : trouver la puissance de 10 la plus haute du nombre (ici 3)
tu divise ce nombre par cette puissance (donc ici par 1000) et tu conserve la partie entière (ici 4)(automatique lors de la division d'entier normalement).
Donc, premier nombre 4.
Tu reprends ton nombre d'orignie, tu lui enleve le denier nombre trouver (4)fois la puissance (1000) et tu divise le résultat par la puissance inférieur inférieur (100), tu récupère la partie entière etc...
tu obtiens ainsi 4,3 ,2, 1 comme entier.
Il ne te reste plus qu'à les écrire dans l'autre sens:
1*10^3+2*10^2+3*10^1+4
Voilà, j'espère avoir été clair.
Il suffit de découper ton nombre (4321) en chiffre et de les écrire à l'envers.
l'algo : trouver la puissance de 10 la plus haute du nombre (ici 3)
tu divise ce nombre par cette puissance (donc ici par 1000) et tu conserve la partie entière (ici 4)(automatique lors de la division d'entier normalement).
Donc, premier nombre 4.
Tu reprends ton nombre d'orignie, tu lui enleve le denier nombre trouver (4)fois la puissance (1000) et tu divise le résultat par la puissance inférieur inférieur (100), tu récupère la partie entière etc...
tu obtiens ainsi 4,3 ,2, 1 comme entier.
Il ne te reste plus qu'à les écrire dans l'autre sens:
1*10^3+2*10^2+3*10^1+4
Voilà, j'espère avoir été clair.
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
2 févr. 2007 à 20:42
2 févr. 2007 à 20:42
Bah tu peux directement utiliser une chaine de caractère et atoi :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/atoi.3.html
.. ou quelque chose dans ce goût-là...
Bonne chance
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/atoi.3.html
#include <string.h> #include <stdio.h> int miroir(unsigned int x){ char buffer1[100]; char buffer2[100]; unsigned int n,i; sprintf(buffer1,"%d",x); n = strlen(buffer1); // Recopier de droite à gauche for(i=0;i<n;++i) buffer2[n-1-i]=buffer1[i]; return atoi(buffer2); }
.. ou quelque chose dans ce goût-là...
Bonne chance
plop!
Messages postés
54
Date d'inscription
jeudi 1 février 2007
Statut
Membre
Dernière intervention
16 mai 2007
27
3 févr. 2007 à 07:21
3 févr. 2007 à 07:21
Tu prévoies les architectures 256 bits avec tes unsigned int de 100 digits ? ;o)
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
3 févr. 2007 à 13:38
3 févr. 2007 à 13:38
Boooarf :-) C'est juste que j'avais pas envie de me prendre la tête. Manifestement en plus c'est un exercice pour apprendre les boucles. Et puis bon qu'est ce qu'un buffer de 100 char de nos jours :p