Shit Fliez Index du Forum Shit Fliez
Bienvenue sur le forum officiel des Shit Fliez !
 
 AccueilAccueil  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

il m'énerve ce PGCD

 
Poster un nouveau sujet   Répondre au sujet    Shit Fliez Index du Forum -> Général
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Calak



Inscrit le: 03 Avr 2003
Messages: 122
Localisation: Au pays des frites ^___^

MessagePosté le: 14 Oct 2003 13:07    Sujet du message: il m'énerve ce PGCD Répondre en citant

Bon, je suisen train de faire un exo pour l'école ( recherche du plus grand diviseur commun), et je bloque sur un code...
je capte vraiment pas, j'ai beau faire toutes les vérif que je veux ça marche pas...

En fait, la boucle ne s'éxécute pas, et j'ai pas la moindre idée de la cause.
par exemple, je teste avec 20 et 15

j'ai tapé un printf de débug dans le doute, mais il me retourne bien les valeur que j'attend...
Le débug avant la boucle me retourne 1 - 0 - 1 donc la boucle devrait s'exécuter...

qqun peut m'éclairer sur ce problème?

Code:
#include <stdio.h>

int main(void){
   int a,b,c;

   scanf("%d%d",&a, &b);
   if (a <= b)
   {
      c = a;
   }
   else
   {
      c = b;
   }

   printf("#DEBUG %d - %d - %d\n",a % c != 0, b % c != 0 , c > 0);

   while(a % c != 0 && b % c != 0 && c > 0)
   {
      c--;
   }

   printf("le PGCD de %d et %d = %d\n",a,b,c);
   return 0;
}



j'aurais jamais cru avoir un probs un jour avec une boucle aussi simple
surtout qu'avant ça j'ai enchainé plus de 30 exo sur les boucles, sans le moindre problème ( et des plus complexe... )>_<
_________________
un grand sage a écrit:


Heureux l'étudiant qui comme l'eau suit son cours en restant dans son lit

Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur Adresse AIM Yahoo Messenger MSN Messenger
Fremen^SF
GDB des Shit Fliez


Inscrit le: 21 Mar 2003
Messages: 860
Localisation: Versailles

MessagePosté le: 14 Oct 2003 15:06    Sujet du message: Répondre en citant

En fait Calako, c'est bien ta boucle while qui cause problème.

Code:
while(a % c != 0 && b % c != 0 && c > 0)


signifie :

tant que ( a % c != 0 ET b % c != 0 ET c > 0 ) continuer la boucle

Or, en logique, 1 ET 0 ET 1 = 0
Donc forcément ta boucle s'arrête dès le départ (puisque b % c == 0).

Ce qui ne va pas, c'est que dans ton while, tu dois écrire le contraire de "c divise b ET c divise a", et le contraire est "c ne divise pas b OU c ne divise pas a". Si on se comprend ^^ En fait, un truc correct ça donnerait ça :

tant que (( a % c != 0 OU b % c != 0 ) ET ( c > 0 )) continuer la boucle

En espérant que ça t'aidera, en tout cas n'hésite pas à repasser en cas de pépin Clin d'oeil
_________________
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur
Calak



Inscrit le: 03 Avr 2003
Messages: 122
Localisation: Au pays des frites ^___^

MessagePosté le: 14 Oct 2003 16:47    Sujet du message: Répondre en citant

bon je vais tester, mais je t'explique pk je pensais que mon raisonnement était juste ( tu pourra p-e me dire où est mon erreur Moqueur )

donc je reprend la ligne:

(a % c != 0 && b % c != 0 && c > 0)

prenons : a=20, b=15, c=15

(a % c != 0 && b % c != 0 && c > 0)
donc
(1 && 0 && 1) donc ( 0 )

...


...

c'est bon, j'ai compris ^^;


/me est un boulay ( (c) Moua )
_________________
un grand sage a écrit:


Heureux l'étudiant qui comme l'eau suit son cours en restant dans son lit

Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur Adresse AIM Yahoo Messenger MSN Messenger
Fremen^SF
GDB des Shit Fliez


Inscrit le: 21 Mar 2003
Messages: 860
Localisation: Versailles

MessagePosté le: 14 Oct 2003 17:15    Sujet du message: Répondre en citant

Meuh non t'es pas un boulet Mort de rire

Ou alors on est deux, ça m'arrive très souvent aussi de me tromper dans les boucles while. En fait dès que je dois en écrire une, je me la "traduit en français", en général ça permet d'éviter de faire des erreurs. Clin d'oeil
_________________
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur
Calak



Inscrit le: 03 Avr 2003
Messages: 122
Localisation: Au pays des frites ^___^

MessagePosté le: 14 Oct 2003 21:45    Sujet du message: Répondre en citant

le pire c'est que j'avais pas trop capté ton texte ( c'est ça de lire en diagonale ^^; )

mais qu'en tapant mon post j'ai capté ce que tu voulais dire, et capté que ce que je pensais était faux ^^;
_________________
un grand sage a écrit:


Heureux l'étudiant qui comme l'eau suit son cours en restant dans son lit

Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur Adresse AIM Yahoo Messenger MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Shit Fliez Index du Forum -> Général Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001 phpBB Group
trevorj :: theme by ~// TreVoR \\~
Traduction par : phpBB-fr.com