Posté(e) le 14 octobre 200420 a bon je galère de trop avec ce fichu TP que cette **** de prof ns refile en pensant qu'on est des dieux de la programmation !!!! voilà la question : écrire un programme qui echange l'ordre des chiffres d'un nombres a 2 chiffres. entrée utilisateur : un nombre à 2 chiffres sortie programme: l'entier résultant de l'inversion de ces 2 chiffres. voilà ce que j'ai au départ : int a,b; printf("Veuillez entrer un nombre à 2 chiffres \n"); scanf("%d%d", &a, &b); printf("%d%d", b,a); le pb, c'est qu'il lit pas les 2 chiffres du nbr comme il faut ! help plz, c'est pr demain !!!
Posté(e) le 14 octobre 200420 a Tu crois quand même pas qu'on va te faire ton TP non plus... Cherche un peu, je t'aide, il ne faut faire l'acquisition d'un seul int...
Posté(e) le 14 octobre 200420 a Tu crois quand même pas qu'on va te faire ton TP non plus... Cherche un peu, je t'aide, il ne faut faire l'acquisition d'un seul int... Peux tu m'aider s'il te plait, ca m'interesse ! Thx U d'avance !
Posté(e) le 14 octobre 200420 a Auteur exacte Théocrite, j'ai trouvé, mais en faisant la division par 10, ce qui revient au modulo
Posté(e) le 14 octobre 200420 a Auteur oui, il faut appliquer la division euclidienne, pour avoir le quotient et le reste de la division
Posté(e) le 15 octobre 200420 a ou avec des decalages c possible aussi non? tu penses au décalage de bits (genre shr, shl en assembleur/pascal ou >>, << en C++) ? Dans ce cas , ce n'est pas possible, car le decalage s'effectue au niveau des bits et non des octets; puisque le decalage revient à une multiplication ou division par une puissance de 2. Mais si le nombre de départ est en hexadécimal, alors il faut utiliser le décalage si le nombre de départ est en décimal, alors il faut utiliser le modulo
Posté(e) le 15 octobre 200420 a mogwai, je ne remettrais jamais en question tes compétences en programmation, mais je ne suis pas d'accord avec ça : Mais si le nombre de départ est en hexadécimal, alors il faut utiliser le décalagesi le nombre de départ est en décimal, alors il faut utiliser le modulo J'aurais plutôt dit : Il faut utiliser le décalage entres les bits (plus rapide) quand le diviseur est une puissance de 2. Il faut utiliser le modulo dans tous les autres cas.
Posté(e) le 15 octobre 200420 a mogwai, je ne remettrais jamais en question tes compétences en programmation, mais je ne suis pas d'accord avec ça : J'aurais plutôt dit : Il faut utiliser le décalage entres les bits (plus rapide) quand le diviseur est une puissance de 2. Il faut utiliser le modulo dans tous les autres cas. Je voulais dire que dans son problème le nombre rentré était en décimal donc dans ce cas, il faut utiliser le modulo mais si le nombré rentré était en hexa, alors il pouvait utiliser le decalage (à la place du modulo et la division entière) exemple Nombre_rentre = AC (hexa) = 10101100 (binaire) = 172 (décimal) Chiffre_gauche = Nombre_rentre shr 4 Chiffre_droite = Nombre_rentre - (Chiffre_gauche shl 4) Mais ca ne fonctionne qu'avec l'hexadécimal d'où mon message Mais si le nombre de départ est en hexadécimal, alors il faut utiliser le décalagesi le nombre de départ est en décimal, alors il faut utiliser le modulo quant à Il faut utiliser le décalage entres les bits (plus rapide) quand le diviseur est une puissance de 2.Il faut utiliser le modulo dans tous les autres cas. dans son cas, il ne pouvait pas utiliser le decalage de bits...C'est vrai, c'est vendredi, je ne suis peut-etre pas tres clair, vivement week-end !
Posté(e) le 15 octobre 200420 a J'avais compris t'inquiètes dans son cas, il ne pouvait pas utiliser le decalage de bits... Oui, 10 n'est pas une puissance de 2
Posté(e) le 15 octobre 200420 a et pourquoi ne pas simplement se dire qu'un nombre a deux chiffres c'est aussi un mot a deux lettres ?
Posté(e) le 15 octobre 200420 a On pourrait si tu stoque ton nombre sous forme de chaines de caractères. On peut remplacer le scanf("'%d") par un scanf("%s") Mais généralement les nombres sont stoqués en entiers, ce qui prends moins de place et est plus rapide.
Posté(e) le 15 octobre 200420 a Voici le code en langage C : printf(........): // jusque la c'est bien ce que tu as fait mais tu vas devoir inverser le nombre de 2 chiffres de la facon suivante : sachant le nombre n=ab : un nombre de 2 chiffres entre 10 et 99 inclus int x,y; x=n%10 ; // la tu recuperes le chiffre b (exemple de 25, tu recupere le 5) ! y= n/10 ; // la tu recuperes le chiffre a (exemple de 25 tu recupere le 2) l'inversion se fait comme suit : printf(" %d%d",y,x); Allé, bon courage pour la suite de ton TP !!! ciao !
Posté(e) le 15 octobre 200420 a Auteur héhéhé merci divx, j'avais reussi, c'etait a rendre pr ce matin mais merci qd mm
Posté(e) le 16 octobre 200420 a On pourrait si tu stoque ton nombre sous forme de chaines de caractères.On peut remplacer le scanf("'%d") par un scanf("%s") Mais généralement les nombres sont stoqués en entiers, ce qui prends moins de place et est plus rapide. Je parlais de : #include <stdio.h>void main() { char a=' ',b=' '; printf("Saisir le nombre à deux chiffres :\n"); a = getchar(); b = getchar(); printf("Nombre inversé = %c%c\n",b,a); } Avec plus de deux chiffres, inverser le nombre reste facile. Modifié le 16 octobre 200420 a par Irgoff
Posté(e) le 16 octobre 200420 a C'est pas cool, parce que tu ne sais pas le nombre de chiffres à l'avances...
Posté(e) le 19 octobre 200420 a Moi ce que j ai eu c est: Lire 10 phrases au clavier Les stocker Les decomposer en mots Afficher une majuscule a chaque premiere lettre d un mot Afficher une majuscule a chaque voyelle Tout afficher
Posté(e) le 19 octobre 200420 a Moi ce que j ai eu c est:Lire 10 phrases au clavier Les stocker Les decomposer en mots Afficher une majuscule a chaque premiere lettre d un mot Afficher une majuscule a chaque voyelle Tout afficher Facile avec les pointeurs ! 1) découpage des phrases en mots ==> Faire une liste de liste (chaque élément étant un mot) 2) les traitements sur chaque mot Affichage
Posté(e) le 19 octobre 200420 a En effet c est facile mais quand je vois qu on arrive deja pas a diviser un nombre de deux chiffres en ... deux chiffres ...
Posté(e) le 19 octobre 200420 a Facile, il suffit de les récupérer en mot et non en phrases avec des scanf("%s") et non des fgets (et encore mois des gets c'est mal !) Ensuite, tu fais un toupper(texte[phrase][mot][lettre]) ou là même chose avec une liste chainée.
Posté(e) le 19 octobre 200420 a J ai pas trop compris ton raisonnement la ... récupérer avec des scanf("%s") ok mais tu dois connaitre le nombre de mots alors non ?
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.