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

Langage Java Discussion :

[Debutant] [Algo] [Debug]


Sujet :

Langage Java

  1. #1
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut [Debutant] [Algo] [Debug]
    Voici mon 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     /* Données en entrée */
     
           int nbr = 0;
           int max = 0; 
           int min = 0;
     
        /* Résultats */
     
        /* Données modifiées */
     
        /* Données de travail */
     
        /* Traitement */
     
        /* Entrée des données */    
     
           while ( nbr != -1 )
    {
     
            nbr = Lire.i(" entrez le nombre : ");
     
           if (nbr == -1)
       {
            break;
       }
     
            if ( nbr > max )
        {
              max = nbr;
        }
     
    }
           if ( nbr < max )
           {
              min = nbr;       
           }
        /* Calculs */
     
        /* Sortie des résultats */
     
           System.out.println("La valeur de max : " + max);
           System.out.println("la valeur de min : " + min);
    et voici mon résultat

    entrez le nombre : 4
    entrez le nombre : 5
    entrez le nombre : -9
    entrez le nombre : -1
    La valeur de max : 5
    la valeur de min : -1

    ici je ne veux pas qu'il me compte le -1, donc le plus petit est -9

    j'espere que j'ai été clair merci pour toutes vos réponses

    Michael

    [ Modéré par Viena ]
    Ajout d'un tag et modification du titre : Pour la compréhension de tous, utilisez un titre clair et les tags ! merci.

    Les Règles du Forum

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 147
    Points : 155
    Points
    155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ( nbr < MAX )
    {
       min = nbr;       
    }
    ca ca marchera beaucoup mieux je pense
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ( nbr < MIN )
    {
       min = nbr;       
    }
    De plus le fait que cette portion de code fait qu'il est exécuté même en dehors de la boucle ... Indentes bien ton code, ca evitera ce genre de problème

  3. #3
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut Merci mais tjr le meme probleme
    Merci pour ta réponse mais j'ai tjr le meme probleme, regarde ceci

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    /* Données en entrée */
     
           int nbr = 0;
           int max = 0; 
           int min = 0;
           int PrePosMax = 0;
           int i;
        /* Résultats */
     
        /* Données modifiées */
     
        /* Données de travail */
     
        /* Traitement */
     
        /* Entrée des données */  
     
     
     
           for ( i = 1 ; nbr != -1 ; i++ ){
     
            nbr = Lire.i(" entrez le nombre : ");
     
            if ( nbr > max ){
     
              max = nbr;
              PrePosMax = i;
        }
     
    }
             if ( nbr < min ){
     
                min = nbr;       
           }
        /* Calculs */
     
        /* Sortie des résultats */
     
           System.out.println("La valeur de max : " + max);
           System.out.println("la valeur de min : " + min);
           System.out.println("Max est à la position : " + PrePosMax);
    et voici le résultat

    entrez le nombre : 5
    entrez le nombre : 3
    entrez le nombre : 8
    entrez le nombre : 1 Voici la valeur MIN
    entrez le nombre : -1
    La valeur de max : 8
    la valeur de min : -1 je ne veux pas qu'il me dise que c'est - 1 la valeur min car cette valeur me sert simplement pour sortir du Pgr
    Max est à la position : 3

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 147
    Points : 155
    Points
    155
    Par défaut
    Comme je le disais au message précédent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ( nbr < min ){
     
                min = nbr;       
           }
    n'est pas dans la boucle.

    min n'est donc pas mis à jour.
    quand on sort de la boucle, min = 0, nbr = -1
    donc il fait if nbr < min
    ce qui est le cas vu (-1 < 0)
    donc il fait l affectation min = nbr; // avec nbr = -1;

    Regardes tes accolades, la mise à jour de min n'est pas dans la boucle.

  5. #5
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut Meme quand Min est dans la boucle
    Je me permet de t'écrire par ici car meme si je met min dans la boucle le probleme est tjr le meme

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    /* Entrée des données */  
     
     
     
           for ( i = 1 ; nbr != -1 ; i++ ){
     
            nbr = Lire.i(" entrez le nombre : ");
     
            if ( nbr > max ){
     
              max = nbr;
              PrePosMax = i;
            }  
     
             else if ( nbr == max ){ // si max est égale a nbr
     
              effmax = effmax + 1;
           }
     
              if ( nbr < min ){
     
                min = nbr;       
           }
    }               
        /* Calculs */
     
        /* Sortie des résultats */
     
           System.out.println("La valeur de max : " + max);
           System.out.println("la valeur de min : " + min);
           System.out.println("Max est à la position : " + PrePosMax);
           System.out.println("\neffectif du maximum est : " + effmax);
    Résulat
    ---------

    entrez le nombre : 8
    entrez le nombre : 8
    entrez le nombre : 8
    entrez le nombre : 8
    entrez le nombre : 0
    entrez le nombre : -1
    La valeur de max : 8
    la valeur de min : -1
    Max est à la position : 1

    effectif du maximum est : 4

    je ne comprend vraiment pas, on va dire que je suis débutant hihihi, merci pour tes réponses c'est vraiment super sympa de ta part

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 147
    Points : 155
    Points
    155
    Par défaut
    ta condition de ta boucle for nbr != -1
    est evalué en début de boucle

    quand tu vas saisir -1
    tu vas continuer dans ta boucle
    et donc passer par la condition

    if nbr < min

    etant donné que ton min est initialisé à 0
    il fera l effectation min = -1
    et sortira de la boucle juste après.

    la tu pourras remettre la condition if (nbr == -1) break; apres le Lire
    et il sortira de la boucle juste après que t'ais saisi -1

  7. #7
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut C'est presque fini mais encore un petit souci
    Bon, revoici encore une fois mon 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
    25
     
     
    for ( i = 1 ; nbr != -1 ; i++ ){
     
             nbr = Lire.i(" entrez le nombre : ");
     
            if ( nbr > max ){
     
              max = nbr;
              PrePosMax = i;
            }  
     
             else if ( nbr == max ){ // si max est égale a nbr
     
              effmax = effmax + 1;
           }
             if (nbr == -1){
                 break;
             }
     
             if ( nbr < max ){
     
                min = nbr;       
           }
    }
    j'ai encore un petit probleme quand je met le min en premiere position, il n'y tiens pas compte ex :

    entrez le nombre : 1
    entrez le nombre : 2
    entrez le nombre : 3
    entrez le nombre : 4
    entrez le nombre : 5
    entrez le nombre : -1
    La valeur de max : 5
    la valeur de min : 0
    Max est à la position : 5
    Max apparait : 1 fois

    par contre si je met min par ex a la 3 emes positon comme ceci

    entrez le nombre : 3
    entrez le nombre : 2
    entrez le nombre : 1
    entrez le nombre : 5
    entrez le nombre : 5
    entrez le nombre : -1
    La valeur de max : 5
    la valeur de min : 1
    Max est à la position : 4
    Max apparait : 2 fois

    il me dit bien que min est 1

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Il faut mettre if(nbr<min) et non pas if(nbr<max) dans ta derniere condition.

  9. #9
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut Sa ne fonctionne pas
    Quand je fais ceci sa ne fonctionne pas non plus, j'ai tjr la meme erreur

    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
     
     
     for ( int i = 1 ; nbr != -1 ; i++ ){
     
             nbr = Lire.i(" entrez le nombre : ");
     
            if ( nbr > max ){
     
              max = nbr;
              PrePosMax = i;
            }  
     
             else if ( nbr == max ){ // si max est égale a nbr
     
              effmax = effmax + 1;
           }
             if (nbr == -1){
                 break;
             }
     
             if ( nbr < min ){
     
                min = nbr;       
           }

  10. #10
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    ton probleme avec min = 0 est un probleme classique lors de la recherche du minimum ou du maximum. tu choisis un valeur par defaut pour initialiser ta valeur min et par malchance, cette valeur est plus petite ou plus grande que toute les autres a valeur. Pour regler ce genre deux problemes, tu as deux solutions possibles :

    - soit tu initialises ton min et ton max a la premiere iteration de la boucle et non avant
    - soit tu initialises min ( resp max ) avec la valeur la plus grande ( resp. la plus petite ) autorisé par le type de donnée que tu utilises. Comme ca, le min et le max vont forcement ce mettre a la premiere valeur.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Points : 31
    Points
    31
    Par défaut
    Salut! essaye ce code ci:

    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
     
    		int max = 0;
    		int min = 0;
    		int nbr = 0;
    		int effmax = 0;
    		int PrePosMax = 0;
     
    		while (nbr != -1) {
    			nbr = lire.i(" entrez le nombre : ");
                            ++PrePosMax;			
     
    			if (nbr>max) {
    				max = nbr;
    			}else if (nbr == max){
    				effmax = effmax + 1;
    			}else if (nbr<min) {
    				min = nbr;
    			}
    		}
                    System.out.println("La valeur de max : " + max);
                    System.out.println("la valeur de min : " + min);
                    System.out.println("Max est à la position : " + PrePosMax);
                    System.out.println("\neffectif du maximum est : " + effmax);
    Bon courage!

  12. #12
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut
    Bonjour, pouvez vous me montrez ou je dois initialisé max car je n'ai pas trop bien compris, voici mon 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    /* Données en entrée */
     
           int nbr = 0;
           int max = 0;
           int min = 0;
           int PrePosMax = 0;
           int PrePosMin = 0;
           int effmax = 1;
     
        /* Résultats */
     
        /* Données modifiées */
     
        /* Données de travail */
     
        /* Traitement */
     
        /* Entrée des données */  
     
     
           for ( int i = 1 ; nbr != -1 ; i++ ){
     
             nbr = Lire.i(" entrez le nombre : ");
     
            if ( nbr > max ){
     
              max = nbr;
              PrePosMax = i;
            }  
     
             else if ( nbr == max ){ // si max est égale a nbr
     
              effmax = effmax + 1;
           }
             if (nbr == -1){
                 break;
             }
     
             if ( nbr < min ){
     
                min = nbr;       
           }
    }               
        /* Calculs */
     
        /* Sortie des résultats */
     
           System.out.println("La valeur de max : " + max);
           System.out.println("Max est à la position : " + PrePosMax);
           System.out.println("Max apparait  : " + effmax + " fois " );
           System.out.println("la valeur de min : " + min);

  13. #13
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Points : 31
    Points
    31
    Par défaut
    Salut!
    Essaye de retirer le "else" de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    else if ( nbr == max ){ // si max est égale a nbr
    ou met en a chaque condition ce qui serait celon moi, plus logique!

    As tu essayé le bout de code que je t'es envoyé?*

    Bon courage!

Discussions similaires

  1. [debutant] algo sur la duré ecoulée.
    Par vanilla94 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 29/11/2006, 09h27
  2. [debutant] #include <Debug/MemoryManager.h>
    Par toutpt dans le forum MFC
    Réponses: 2
    Dernier message: 21/02/2006, 17h29
  3. [debutant] algo de boids
    Par ryu20 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/04/2005, 00h27
  4. [Debutant(e)]Debug Java sous Eclipse
    Par Jean_Benoit dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/01/2005, 10h51
  5. [Debutant] Livres sur l'algo?
    Par mike55 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 20/04/2004, 19h56

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