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: 849
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: 849
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