ganjatealq Posté(e) le 14 octobre 2004 Partager Posté(e) le 14 octobre 2004 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 !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 14 octobre 2004 Partager Posté(e) le 14 octobre 2004 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
ganjatealq Posté(e) le 14 octobre 2004 Auteur Partager Posté(e) le 14 octobre 2004 c'est bon on a trouvé mais merci qd mm de ta non-aide... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sarvok Posté(e) le 14 octobre 2004 Partager Posté(e) le 14 octobre 2004 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 ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 14 octobre 2004 Partager Posté(e) le 14 octobre 2004 Il faut utiliser l'opérateur modulo (%) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ganjatealq Posté(e) le 14 octobre 2004 Auteur Partager Posté(e) le 14 octobre 2004 exacte Théocrite, j'ai trouvé, mais en faisant la division par 10, ce qui revient au modulo Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 14 octobre 2004 Partager Posté(e) le 14 octobre 2004 En fait il faut obligatoirement utiliser les deux. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ganjatealq Posté(e) le 14 octobre 2004 Auteur Partager Posté(e) le 14 octobre 2004 oui, il faut appliquer la division euclidienne, pour avoir le quotient et le reste de la division Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pedz Posté(e) le 15 octobre 2004 Partager Posté(e) le 15 octobre 2004 ou avec des decalages c possible aussi non? Lien vers le commentaire Partager sur d’autres sites More sharing options...
mogwai93 Posté(e) le 15 octobre 2004 Partager Posté(e) le 15 octobre 2004 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 15 octobre 2004 Partager Posté(e) le 15 octobre 2004 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
mogwai93 Posté(e) le 15 octobre 2004 Partager Posté(e) le 15 octobre 2004 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 ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 15 octobre 2004 Partager Posté(e) le 15 octobre 2004 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Irgoff Posté(e) le 15 octobre 2004 Partager Posté(e) le 15 octobre 2004 et pourquoi ne pas simplement se dire qu'un nombre a deux chiffres c'est aussi un mot a deux lettres ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 15 octobre 2004 Partager Posté(e) le 15 octobre 2004 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
divx Posté(e) le 15 octobre 2004 Partager Posté(e) le 15 octobre 2004 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 ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
ganjatealq Posté(e) le 15 octobre 2004 Auteur Partager Posté(e) le 15 octobre 2004 héhéhé merci divx, j'avais reussi, c'etait a rendre pr ce matin mais merci qd mm Lien vers le commentaire Partager sur d’autres sites More sharing options...
Irgoff Posté(e) le 16 octobre 2004 Partager Posté(e) le 16 octobre 2004 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 16 octobre 2004 Partager Posté(e) le 16 octobre 2004 C'est pas cool, parce que tu ne sais pas le nombre de chiffres à l'avances... Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 16 octobre 2004 Partager Posté(e) le 16 octobre 2004 ben si tu le sais... 2 chiffres. Et les pointeurs? Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 19 octobre 2004 Partager Posté(e) le 19 octobre 2004 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mogwai93 Posté(e) le 19 octobre 2004 Partager Posté(e) le 19 octobre 2004 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 19 octobre 2004 Partager Posté(e) le 19 octobre 2004 En effet c est facile mais quand je vois qu on arrive deja pas a diviser un nombre de deux chiffres en ... deux chiffres ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 19 octobre 2004 Partager Posté(e) le 19 octobre 2004 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 19 octobre 2004 Partager Posté(e) le 19 octobre 2004 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.