Exercice de java

Fermé
aladin - 13 nov. 2011 à 18:11
 ilyass - 18 sept. 2014 à 21:51
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 jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
Modifié par EminoMeneko le 13/11/2011 à 22:53
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
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
13 nov. 2011 à 18:14
0
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
13 nov. 2011 à 18:27
j'ai déjà le corrigé .
Ben affiche-le alors ;-)
0
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
13 nov. 2011 à 18:34
Ben si tu as la réponse c'est que tu dois savoir comment tu as fait, non ?
0
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
14 nov. 2011 à 01:29
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 jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
14 nov. 2011 à 03:17
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
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
14 nov. 2011 à 14:33
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
Franchement je viens de comprendre
0