Votre question

Aide - Langage C - Fonction scanf

Tags :
  • Rhino
  • Programmation
Dernière réponse : dans Programmation
28 Septembre 2009 20:02:40

Bonjour,

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.

Merci à vous,

Autres pages sur : aide langage fonction scanf

a b L Programmation
28 Septembre 2009 20:44:15

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;
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS