Je suis en DUT Info et j'apprends le C. Faute d'une rhino, je n'ai pas pu être présent à un TP et donc j'me suis retrouvé un peu à la ramasse. Par chance, ils sont sur le net, donc j'peux m'entrainer à la maison, mais je bloque sur un truc et j'y arrive absolument pas et j'aimerai votre aide.
Ecrire un programme qui saisit deux entiers a et b positifs (le deuxième non nul) et qui affiche leur division euclidienne sous la forme a=b.q+r
J'ai essayé 10'000'000 de trucs et ça n'a jamais marché, j'vais juste vous mettre ce que j'ai actuellement parce que je désespère un peu :s.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a,b,q,r;
q=(a/b);
r=a-(b*q);
printf("Entrer deux entiers a et b : " );
scanf("%d %d",&a,&b);
printf("La division euclienne de a par b est : %d=%d.%d+%d\n",a,b,q,r);
return EXIT_SUCCESS;
}
Il est très fort probable qu'il y ait beaucoup d'erreurs, mais comme j'fais que apprendre (2 semaine même pas), bah j'ai un peu de mal, mais j'suis prêt à recevoir des conseils.
Le programme, une fois compilé, s'exécute ligne par ligne en commençant par le main:
1. "int a,b,q,r;" déclaration sur la pile (variable locale à la fonction courante) des entiers a, b, q et r. Ces valeurs sont initialisé à 0 ou laissé à la valeur aléatoire qui se trouve en mémoire (dépend du compilateur et du mode de compilation)
2. "q=(a/b)" calcule la division entière entre a et b. Problème: ici, a et b sont soient à 0 soit ont des valeurs aléatoire, donc ce calcul ne sert à rien. Si, par hasard, b=0 alors ton programme soulève une exception de division par 0.
3. "r=a-(b*q); " idem, ne sert à rien vu que a,b et q ont n'importe quoi comme valeur.
4. "printf("Entrer deux entiers a et b : " ); " affiche le message
5. "scanf("%d %d",&a,&b);" met dans a et b les 2 valeurs décimales entrées par l'utilisateur
=> maintenant que a et b sont initialisés, c'est maintenant qu'il faut faire les calculs
6. "printf("La division euclienne de a par b est : %d=%d.%d+%d\n",a,b,q,r); " ton programme affiche les valeurs bidon si b!=0 et si le calcul est fait avant l'initialisation de la variable.
7. "return EXIT_SUCCESS; " mort du processus.
Voilà, sinon ton calcul de r est bon, mais il y a plus rapide avec le modulo (calcul du reste de la division): r = a % b;
------------------------------6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky