bonjour ,
est ce que vous pouvez m'expliquer, comment on a obtenu ces résultats :
n = p = 0 ;
while (n<=8) n+= p++ ; donne n=10 ??
n = p = 0 ;
while (n<=5) n+=p++; donne n = 15 ??
Merci.
Version imprimable
bonjour ,
est ce que vous pouvez m'expliquer, comment on a obtenu ces résultats :
n = p = 0 ;
while (n<=8) n+= p++ ; donne n=10 ??
n = p = 0 ;
while (n<=5) n+=p++; donne n = 15 ??
Merci.
En consommant certaines substances hallucinatoires, ou alors en admettant une définition très créative de "ça donne n = 15".
La première boucle se termine bien en laissant n à la valeur 10.
Mais la deuxième le laisse à la valeur 6 et non pas 15. Il aurait en effet été étrange, et en fait impossible, que n obtienne une plus grande valeur dans la deuxième boucle que dans la première, puisqu'elles font le même traitement qui ne va que croissant, et que la seconde s'arrête plus tôt.
Moi aussi j'arrive a 6 et non 15 ... ca devaient vraiment être de la bonne.
Donc pour moi, pgs007, a moins que tu ne nous prouves le contraire, c'était a toi de mieux penser :) (sans agressions, nous sommes peut être tous deux dans l'erreur)... Et puis si le résultat avait été différent du C a java ... je pense que ca aurait été assez grave.
Voici d'ailleurs les valeurs dans la boucle après affection a n
N = 0
P = 1
N = 1
P = 2
N = 3
P = 3
N = 6
P = 4
Valeurs finale:
N = 6
P = 4
n = p = 0 ;
while (n<=8) n+= p++ ; donne n=10 ??
1ere itération:
n=0, p=0 en sortie n = 0 et p = 1
2e itération:
n=0, p=1 en sortie n = 1 et p = 2
3e itération:
n=1, p=2 en sortie n = 3 et p = 3
4e itération:
n=3, p=3 en sortie n = 6 et p = 4
5e itération:
n=6, p=4 en sortie n = 10 et p = 5
et n=10 est bien > à 8.
n = p = 0 ;
while (n<=5) n+=p++; donne n = 15 ??
pour le 2e on s'arrete encore plutot vu que n doit être > 5, si on regarde les étapes précédentes, ça serait:
4e itération:
n=3, p=3 en sortie n = 6 et p = 4
Le code est :
n = p = 0 ;
while(n<=5) n+=++p ; ça donne bien n=15 ;
Merci
++p devient p++ maintenant apparement... mais ca reste tjrs 6 pour moi (il n'y aura que P qui sera different d'un cas a l'autre)Citation:
n = p = 0 ;
while (n<=5) n+=p++; donne n = 15 ??
Lui va donner N = 15Code:while (n<=13) n+=p++;
Lui aussi va donner N = 15Code:while (n<=13) n+=++p;
Je vote pour le troll aussi ^^
un troll :roll:
auteur : Claude Delannoy
Exercice Jave : page 19 exercice 16 .;)
Bah c'est peut-être une question ouverte. Après tout, on nous donne pas du code compilable, et en l'occurence on sait pas comment sont déclarés n et p.
C'est peut-être des variables d'instance, et elles sont peut-être volatile, et le programme a peut-être plusieurs threads en même temps qui lisent et modifient ces variables. Dans ce cas, oui, on peut avoir ce genre de résultats délirants.
Moui, on retrouve facilement le bouquin, mais les extraits gratuits ne parlent pas de cet exercice, et une recherche rapide dans les codes sources des exercices ne me l'a pas trouvé non plus.Citation:
auteur : Claude Delannoy
Exercice Jave : page 19 exercice 16 .
J'ai pas trop envie de l'acheter juste pour en avoir le cœur net. Quelqu'un l'a ?
En tout cas tu as eu nos réponses, et au fond rien ne t'empêche d'essayer toi-même. Si le code que tu nous donnes est utilisé de la manière dont on s'y attendrait avec une telle consigne, alors n finit à 6.
Google m'a donné cette réponse là :
sourceCode:
1
2 n=p=0; while (p<=5) n+=p++; /* n=15 */
Donc psg007 tu t'étais trompé sur ++p puis sur n à la place de p... :roll:Citation:
Envoyé par psg007