CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[HELP] calculer PGCD avec "do", "while"

DarkSIlenoz
DarkSIlenoz
Niveau 10
05 novembre 2010 à 16:37:03

Bonjour, dans mon cours j'ai un exercice où il faut déterminer le PGCD de deux nombres entiers en utilisant les fonctions "do" et "while" (je me suis aidé de l'Algorithme d'Euclide : http://fr.wikipedia.org/wiki/Fichier:PGCD.png) et voila ce que ça donne :

  1. include <stdio.h>

main ()

{
int nb1 , nb2 , reste , PGCD ;

printf("Entrez deux nombres : ") ;
scanf("%d %d" , &nb1 , &nb2) ;

if(nb1 > nb2)

{
do

{
reste = nb1 % nb2 ;

nb1 = nb2 ;

nb2 = reste ;

}

while(reste = 0) ;

PGCD = nb2 ;

printf("\n%d\n" , PGCD) ;

}

if(nb1 < nb2)

{
do

{
reste = nb2 % nb1 ;

nb2 = nb1 ;

nb1 = reste ;

}

while(reste = 0) ;

PGCD = nb1 ;

printf("\n%d\n" , PGCD) ;

}

}

Le problème c'est que je ne trouve pas le PGCD... :-(

J'espère que quelqu'un pourra m'aider parce que là j'sais pas quoi faire :noel:

godrik
godrik
Niveau 30
05 novembre 2010 à 16:53:52

Le post sur un wall histoire que l'on puisse lire quelquechose:

http://pastebin.com/qskg9BD6

Le vrai lien vers l'image : http://fr.wikipedia.org/wiki/Fichier:PGCD.png

godrik
godrik
Niveau 30
05 novembre 2010 à 16:55:47

Active les warnings de ton compilateur ou utilsie des outils d'analyse statique de code comme splint. Cela suffit amplement a trouver ton probleme :

$ splint bar.c
Splint 3.1.2 --- 23 Aug 2008

bar.c: (in function main)
bar.c:9:3: Return value (type int) ignored: scanf("%d %d", &...
Result returned by function call is not used. If this is intended, can cast
result to (void) to eliminate message. (Use -retvalint to inhibit warning)
bar.c:25:13: Test expression for while is assignment expression: reste = 0
The condition test is an assignment expression. Probably, you mean to use ==
instead of =. If an assignment is intended, add an extra parentheses nesting
(e.g., if ((a = b)) ...) to suppress this message. (Use -predassign to
inhibit warning)
bar.c:25:13: Test expression for while not boolean, type int: reste = 0
Test expression type is not boolean or int. (Use -predboolint to inhibit
warning)
bar.c:47:13: Test expression for while is assignment expression: reste = 0
bar.c:47:13: Test expression for while not boolean, type int: reste = 0
bar.c:55:2: Path with no return in function declared to return int
There is a path through a function declared to return a value on which there
is no return statement. This means the execution may fall through without
returning a meaningful result to the caller. (Use -noret to inhibit warning)

Finished checking --- 6 code warnings

Jaden_Yuki_
Jaden_Yuki_
Niveau 7
05 novembre 2010 à 17:08:06

while(reste = 0)?

while(reste == 0) :ok:

DarkSIlenoz
DarkSIlenoz
Niveau 10
05 novembre 2010 à 17:19:16

Ah oui juste ^^'

Mais si je prend 48 et 59 comme valeurs par exemple, le programme m'affiche comme réponse: 11, donc il y a encore une erreur non?

godrik
godrik
Niveau 30
05 novembre 2010 à 18:05:42

$ man splint
(ou son equivalent sur ton systeme d'exploitation)

Jaden_Yuki_
Jaden_Yuki_
Niveau 7
05 novembre 2010 à 18:14:11

if(a > b) {
do {
if(! (r = a % b))
break;
a = b ;
b = r ;
} while(r); //on répète tant que r =/= 0, pas le contraire (r == 0) :ok:

pgcd = b ;
printf("\n%d\n" , pgcd) ;
}

à toi de finir lorsque b > a (utilise else)

DarkSIlenoz
DarkSIlenoz
Niveau 10
07 novembre 2010 à 18:15:17

Voila j'ai enfin trouvé, merci.

Pour ceux qui veulent voir : http://pastebin.com/z5t8mbsz

lolojiji
lolojiji
Niveau 10
07 novembre 2010 à 22:49:00

je l'ai fais sur TI-82 en début de seconde ce programme :(

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment