Exercice de java

aladin -  
 ilyass -
bonjour ,
est ce que vous pouvez m'expliquer, comment on a obtenu ces résultats :
n = p = 0 ;
while (n<=8) n+= p++ ; ==> n=10 ??

n = p = 0 ;
while (n<=5) n+=p++; ==> n = 15 ??

Merci.



A voir également:

5 réponses

EminoMeneko Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   318
 
On va essayer de voir ce qui se passe dans tes boucles pas à pas.
n = p = 0 ; 
while (n<=8) 
   n+= p++ ; 

 ==> n=10 <== le résultat 


Un tableau serait idéal pour représenter tout ça mais je n'ai pas ce qu'il faut ici et je ne vais pas m'amuser à faire de l'ASCII-art... ^^'

Soit i un entier qui représente les itérations à partir de 1.
Soit r le résultat du calcul

Tu dois aussi savoir que la ligne n+= p++ est équivalente à la ligne n = n+p mais après avoir fait le calcul p se voit incrémenter de 1.

i n p r
1 0 0 0
2 0 1 1
3 1 2 3
4 3 3 6
5 6 4 10
à ce stade on ne vérifie plus la condition n <= 8 car n=10 > 8.

Maintenant il n'est pas logique que tu obtiennes 15 avec la condition n<=5.
En réutilisant les valeurs trouvées précédemment on devrait trouver 6, résultat que je peux confirmer avec un petit programme que j'ai écris vite fait et qui est équivalent au tient.

Si tu veux bien essayer de le compiler et de vérifier :
import java.util.Scanner; 

public class Somme { 
 public static void main(String[] args) { 
  Scanner  sc = new Scanner(System.in); 
  int val; 
  int n,p; 
  n = p = 0; 
   
  affiche("Seuil de la boucle : "); 
  val = sc.nextInt(); 
   
  while (n <= val) { 
   n+= p++; 
  } 
   
  affiche(String.valueOf(n)); 
 } 
  
 public static void affiche(String msg) { 
  System.out.println(msg); 
 } 
}


Avec ces résultats :
eminomeneko@Devstation:~$ java Somme 
Seuil de la boucle :  
8 
10 
eminomeneko@Devstation:~$ java Somme 
Seuil de la boucle :  
5 
6 


Tu devrais utiliser le débogueur pour voir d'où vient ton erreur.
1
aladin
 
Salut , je te remercie beaucoup pour ton aide , tes explication sont bien détaillées .
Merci encore une fois .
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
0
aladin
 
bonjour ,
je ne demande pas de résoudre les deux question à ma place , mais je demande juste une explication logique , car j'ai passé toute l'après-midi à essayer de trouver une explication mais j'ai pas arrivé !!! j'ai déjà le corrigé .
donc ne jugez pas bêtement .
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
j'ai déjà le corrigé .
Ben affiche-le alors ;-)
0
aladin
 
beh , c'est pas de ma faut si vous avez des problèmes de vue !!!!!!!!!!!!!
mais j'ai fourni les réponses que j'arrive pas à comprendre :
bonjour ,
est ce que vous pouvez m'expliquer, comment on a obtenu ces résultats :
n = p = 0 ;
while (n<=8) n+= p++ ; ==> n=10 <== le résultat

n = p = 0 ;
while (n<=5) n+=p++; ==> n = 15 <==résultat

Merci
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Ben si tu as la réponse c'est que tu dois savoir comment tu as fait, non ?
0
aladin
 
tu me fais rire franchement , je demande une explication à ces résultats .
et s'il te plaît j'ai pas de temps à perdre avec toi , donc si tu as une explication je te remercie pour ton aide , si tu n'as pas d'explication merci de me laisser tranquille .
0
Utilisateur anonyme
 
Salut,

Avec le code que tu nous donnes le résultat est n = 10 à la sortie de la 1ère boucle et n = 6 à la sortie de la seconde.

Quelles sont les résultats que tu attendais ?

Peut-être ne nous donnes tu pas exactement le code que tu utilises pour tester et obtenir 10 et 15 ...

Cordialement,

Dan

--Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
0
EminoMeneko Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   318
 
Oui, parce que l'algorithme (ou la suite de calculs si tu préfères) donnera tout le temps ça. Je ne sais pas comment on a obtenu 15 mais c'est sûrement pas avec la formule n+p.
0
aladin
 
tout d'abord je tiens à vous remercier pour votre aide , en effet les deux résultats
sont correctes , comme je suis débutant j'ai eu du mal à comprendre la logique de ce genre de calcul , mais après quelques recherches sur internet , j'ai pu faire la différence entre ++p et p++ .
Cordialement.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Il faut que tu testes les deux et que tu regardes ce que ça donne pour comprendre.
Ou alors faire une recherche Google, c'est le genre de question qu'on pose tout le temps, que ce soit en C, C++, Java...

int a,b;

b=0;

a = b++;
System.out.println(a); // 0
System.out.println(b); // 1

b=0;

a = ++b;
System.out.println(a); // 1
System.out.println(b); // 1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ilyass
 
Franchement je viens de comprendre
0