[Debutant] probleme boucle

probleme boucle [Debutant] - C++ - Programmation

Marsh Posté le 03-11-2007 à 09:36:37    

Salut quelqu'un pourrait'il me dire ce qui ne va pas dans ce truc:

Code :
  1. for(num = 1; num <= n / 2; num++){
  2.   prime = 1; 
  3.    for(v = 2; v <= num / 2; v++){
  4.    while(prime == 1){
  5.    test = num / v * v;
  6.    if(test == v){
  7.      prime = 0;
  8.    }
  9.   }
  10.   if(prime  = 1){
  11.     cout << num << " ";
  12.   }
  13. }


 
Quelque soit la maniere dont je modifie les parametre j'ai toujours une boucle infinie....

Reply

Marsh Posté le 03-11-2007 à 09:36:37   

Reply

Marsh Posté le 03-11-2007 à 12:54:33    

tu as:
 

Citation :

while(prime == 1){
    test = num / v * v;
    if(test == v){
        prime = 0;   }  
    }


 
et c'est à cet endroit que tu vas foirer:
 
la seule manière de sortir de la boucle, c'est de modifier le 'prime'.
pour cela, d'après ton programme, il faut que test==v.
 
donc si test!=v, tu as une boucle infinie.
 
prenons ton programme. ca fait:
num=1 (première itération du premier for)
prime=1
v=2(première itération du second for)
->prime==1: on rentre dans le while
{test=0 (car 1/2=0; 0*2=0)
->0!=2: on ne rentre pas dans le if}
on répète indéfiniment l'opération entre crochets, puisqu'entre les crochets tu ne dis nulle part "prime!=1"
 
il manque à priori un else, dans lequel un paramètre au moins serait changé (v, test, prime...)
Ou alors change ton while en if... tout dépend de ce que tu souhaites produire avec ce programme
;)


Message édité par Redeka le 03-11-2007 à 12:57:23

---------------
~il Re~
Reply

Marsh Posté le 03-11-2007 à 19:53:23    

Merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed