Posted October 14, 200420 yr 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 !!!
October 14, 200420 yr 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...
October 14, 200420 yr 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 !
October 14, 200420 yr Author exacte Théocrite, j'ai trouvé, mais en faisant la division par 10, ce qui revient au modulo
October 14, 200420 yr Author oui, il faut appliquer la division euclidienne, pour avoir le quotient et le reste de la division
October 15, 200420 yr 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
October 15, 200420 yr 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.
October 15, 200420 yr 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 !
October 15, 200420 yr 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
October 15, 200420 yr et pourquoi ne pas simplement se dire qu'un nombre a deux chiffres c'est aussi un mot a deux lettres ?
October 15, 200420 yr 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.
October 15, 200420 yr 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 !
October 15, 200420 yr Author héhéhé merci divx, j'avais reussi, c'etait a rendre pr ce matin mais merci qd mm
October 16, 200420 yr 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. Edited October 16, 200420 yr by Irgoff
October 19, 200420 yr 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
October 19, 200420 yr 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
October 19, 200420 yr En effet c est facile mais quand je vois qu on arrive deja pas a diviser un nombre de deux chiffres en ... deux chiffres ...
October 19, 200420 yr 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.
October 19, 200420 yr 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 ?
Archived
This topic is now archived and is closed to further replies.