Exercice de java

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.

5 réponses

  1. 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.
    1. Modérateur
      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
  2. 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.
    1. 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.
  3. 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 .
  4. Contributeur
    1. 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 .
    2. Contributeur
      j'ai déjà le corrigé .
      Ben affiche-le alors ;-)
    3. 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
    4. Contributeur
      Ben si tu as la réponse c'est que tu dois savoir comment tu as fait, non ?
    5. 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 .