IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Petit problème sur petit programme


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut Petit problème sur petit programme
    SaLut, j'ai donc comme le titre l'indique un léger probleme sur un exo d'un site et je ne le vois pas du tout ; d'abord voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import java.util.Scanner;
     
    class Main {
     
        public static void main(String[] args) {   
           Scanner sc = new Scanner(System.in);
           int nbPierresMax = sc.nextInt();
           int i = 1;
           int etage = 1;
           int hauteur = 0;
           int total = nbPierresMax;  
     
           while(nbPierresMax > etage) {
              etage = i*i;
              hauteur = hauteur + 1;
              nbPierresMax = nbPierresMax - etage;
              i++;
          }
     
          total = total - nbPierresMax;
          System.out.println(hauteur);
          System.out.print(total);
          }
      }
    le sujet est : Le programme doit d'abord lire un entier, le nombre maximum de pierres dont pourra être composée la pyramide. Ensuite calculer la hauteur de la plus grande pyramide qui pourra être construite et le nombre de pierres qui sera nécessaire.

    le programme semble bon cependant quand je le soumets au site il m'indique une erreur aux résultats.
    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Quelle erreur?

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Oui, mais plus important : elle est construite comment la pyramide, et comment ce programme s'y prend-il pour faire le calcul demandé.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut
    voila qui pourra surement vous aider :
    http://hpics.li/c8a90b5 (erreur)
    http://hpics.li/63834d1 (pyramide)

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ton test ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(nbPierresMax > etage)
    N'est pas bon. Tu teste que le nombre max encodé par l'utilisateur est supérieur au nombre de pierres requises pour encoder l'étage précédent. Alors que ton test devrait être "si il reste suffisament pierre pour créer un nouvel étage, alors on soustrait cette quantité et on ajoute un étage"
    Les deux notions en gras sont manifestement absentes de ton test.

    Dit autrement, ta boucle devrait fonctionner à l'inverse de ton actuelle. Alors que pour le moment tu fais
    tant que .... (test erroné)
    rajouter un étage,
    rajouter cet étage aux pierres nécessaires


    tu devrais faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tant que "il reste assez de pierres pour faire un nouvel étage"
      rajouter une étage
      soustraire du paquet de pierres celles que tu viens d'utiliser
      calculer combien il faudra de pierre au prochain étage.(pour la boucle suivante)

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut
    Hm en fait je comprends pas bien car " while(nbPierresMax > etage) " , ca veut bien dire que si le nombres de pierres total est supérieur aux nombres de pierres nécessaires pr faire un étage, alors on peut toujours créer un etage non? Sachant qu'au fil des boucles, nbPierresMax va diminuter et etage va augmenter , de tel sorte à ce qu'un moment , etage soit supérieur a nbPierresMax et donc impossibilité de faire u nétage de plus!!

    Je ne comprends bien pas la différence entre ce que vous proposez et ce que j'ai fait

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par tamerla Voir le message
    Hm en fait je comprends pas bien car " while(nbPierresMax > etage) " , ca veut bien dire que si le nombres de pierres total est supérieur aux nombres de pierres nécessaires pr faire un étage, alors on peut toujours créer un etage non?
    ha oui, je n'avais pas vu que tu décrémentait nbPierreMax....
    Mais malgré tout, tu compare à l'étage précédent, ce qui n'est pas bon.
    Ton test devrait tester dans l'ordre nbPierreMax à
    1 (premier étage)
    4 (deuxième étage)
    9 (troisième étage).


    Hors si on déroule avec un crayon et un papier ta bouche, on constate que ton test est:

    nbPierresMax > 1 (etage = 1 en entrée de boucle)
    nbPierresMax > 1 (etage = 1*1 = 1 dans la première boucle)
    nbPierresMax > 4 (etage = 2*2 = 4 dans la deuxième boucle)

    bref tu calcule avec un temps de retard La solution est de mettre etage = i*i après le i++, que la valeur de étage soit bonne pour la boucle suivante.

    ps: ton test devrait d'ailleurs être car, si il faut 4 pierres et que j'ai 4 pierres, c'est bon

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut
    merci tchize j'avais meme pas remarqué que je testais deux fois avec etage = 1, j'ai enfin réglé le probleme merci bcp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/12/2007, 01h13
  2. petit problème sur les listes chaînées
    Par poche dans le forum C
    Réponses: 14
    Dernier message: 19/03/2007, 17h53
  3. petit problème sur une drawgrid
    Par florette dans le forum Delphi
    Réponses: 2
    Dernier message: 26/05/2006, 10h41
  4. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 11h46
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo