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

C Discussion :

suite min et max


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Par défaut suite min et max
    bonjour !
    je suis débutant en langage C, et j essay de faire un prg qui affiche le plus grand et le plus petit d une suite d entiers saisie. et je veux pas que les nombre soient conserver en mémoire (pas de tableau)et la suite doit se terminer par la valeur 0
    c est un peu difficil et je suis bloqué je crois qu il y a pas de moyen de faire ce prg sans les tableau !!!
    voulais vous m aider svp?


    bon voila j ai essayer de faire l exo en texte mais il faut que je le traduit en c et pour vous dire j y arrive pas il y a trop de faute...!!!
    voila ce que j ai eu

    Déclaration
    Une variable MonPlusGrandNombre
    Une variable MonPlusPetitNombre

    Initialisation
    Mettre le plus grand nombre possible dans MonPlusPetitNombre
    Mettre le plus petit nombre possible dans MonPlusPetitNombre

    Saisie
    Début de la boucle
    1°) Demander la saisie d'un seul nombre. Si 0, on sort de la boucle.
    2°) Mettre dans MonPlusPetitNombre le plus petit nombre entre le nombre saisi et MonPlusPetitNombre.
    3°) Mettre dans MonPlusGrandNombre le plus grand nombre entre le nombre saisi et MonPlusGrandNombre.
    Boucler.
    Afficher MonPlusPetitNombre et MonPlusGrandNombre.

    j éspere que vous voudriez me le traduire en c

    je doit le traduir en c et je ne sait pas si c est ocmme ça que je doit le faire alors voulez vous me donner un code source qui marche

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Eic2004
    je suis débutant en langage C, et j essay de faire un prg qui affiche le plus grand et le plus petit d une suite d entiers saisie. et je veux pas que les nombre soient conserver en mémoire (pas de tableau)et la suite doit se terminer par la valeur 0
    c est un peu difficil et je suis bloqué je crois qu il y a pas de moyen de faire ce prg sans les tableau !!!
    Il n'y a besoin d'aucun tableau pour faire cet exercice. Juste un peu de bon sens et un petit algorithme. Décrit les opérations à réaliser une par une, en séquence, pose des conditions, fait une boucle...
    bon voila j ai essayer de faire l exo en texte mais il faut que je le traduit en c et pour vous dire j y arrive pas il y a trop de faute...!!!
    voila ce que j ai eu
    Bien.
    Déclaration
    Une variable MonPlusGrandNombre
    Une variable MonPlusPetitNombre

    Initialisation
    Mettre le plus grand nombre possible dans MonPlusPetitNombre
    Mettre le plus petit nombre possible dans MonPlusPetitNombre

    Saisie
    Début de la boucle
    1°) Demander la saisie d'un seul nombre. Si 0, on sort de la boucle.
    2°) Mettre dans MonPlusPetitNombre le plus petit nombre entre le nombre saisi et MonPlusPetitNombre.
    3°) Mettre dans MonPlusGrandNombre le plus grand nombre entre le nombre saisi et MonPlusGrandNombre.
    Boucler.
    Afficher MonPlusPetitNombre et MonPlusGrandNombre.
    Les lignes 2 et 3 ne sont pas très claires. Je mettrais :

    2 - si le nombre saisi et plus petit que MonPlusPetitNombre, mettre le nombre saisi dans MonPlusPetitNombre .
    Idem pour le 3 -.
    alors voulez vous me donner un code source qui marche
    Euh, non. Commence par clarifier l'algorithme, et ensuite code le en C. Si tu as un problème, poste ton code.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Par défaut voila ce que j ai eu en essayant mais ça marche pas alors ?
    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
    #include <stdio.h>  
    #include <stdlib.h>
    #include <conio.h>
     
    main ()
    {
         int min, max, choix=1;  
     
        puts ("Le Min & Le Max" );
        while(choix=0) //on demande tant qu'on ne rentre pas 0  
        puts ("Le Min & Le Max" );
        {
            puts ("entrer votre suite" );
            scanf("%d",&choix);
            if(choix<min)   //si on tape un nombre qui est le plus petit
                min=choix;    //il devient le plus petit ^^  
            if(choix>max)  //si on tape un nombre qui devient le plus grand
                max=choix;   //il devient le plus grand
        }  
        printf("Fin de la saisie   : " );
        printf ("%d", min);
        printf ("%d", max);
        getch ();
        //et là si tu veux tu affiche la valeur de min et max (avec printf)  
        return(0);
    }

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Eic2004
    <...>

    Mes commentaires (-ed-)
    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
     
    #include <stdio.h>  
    #include <stdlib.h>
     
    /* -ed- 
    #include <conio.h>
     
    Non portable. Inutile pour cet exercice... */
     
    /* -ed- 
    main ()
     
    cette forme est désuette. Préférer */ 
    int main (void)
    {
    /* -ed- tu ne respectes pas ton algo. Je cite : 
     
    "Mettre le plus grand nombre possible dans MonPlusPetitNombre
     Mettre le plus petit nombre possible dans MonPlusPetitNombre"
     
    */
         int min, max, choix=1;  
     
        puts ("Le Min & Le Max" );
    /* -ed- Tu ne respectes pas ton commentaire. 
       D'autre part, = est l'opérateur d'affectation et non de comparaison.
       Tu veux sans doute ==, ou plutôt != pour respecter le commentaire...
       D'autre part, il faut connaitre le C un minimum. Quand un while 
       concerne plus d'une instruction, les { } sont obligatoires... */
        while(choix=0) //on demande tant qu'on ne rentre pas 0  
        puts ("Le Min & Le Max" );
        {
            puts ("entrer votre suite" );
            scanf("%d",&choix);
            if(choix<min)   //si on tape un nombre qui est le plus petit
                min=choix;    //il devient le plus petit ^^  
            if(choix>max)  //si on tape un nombre qui devient le plus grand
                max=choix;   //il devient le plus grand
        }  
        printf("Fin de la saisie   : " );
        printf ("%d", min);
        printf ("%d", max);
        getch ();
     
        /* -ed- c'est deja fait au-dessus, non ? Tu commentes au hasard ? */
        //et là si tu veux tu affiche la valeur de min et max (avec printf)  
     
    /* -ed- pas besoin des (). 
               return est une instruction, pas une fonction. */
        return(0);
    }
    Il faut un peu relire le code que tu tapes, parce qu'il y a des copiés/collés étranges...

    Sinon, c'est presque ça. Corrige et c'est OK.

  5. #5
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    main ()
    {
         int min, max, choix=1;  
     
        puts ("Le Min & Le Max" );
        while(choix==0)
        ...
    Je ne comprend pas, eric crée une boucle avec comme condition "tant que choix = 0" mais il ne sera jamais égal à zéro vu que choix au début du programme a une valeur de 1, moi je ne comprend pas bien

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par _SamSoft_
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    main ()
    {
         int min, max, choix=1;  
     
        puts ("Le Min & Le Max" );
        while(choix==0)
        ...
    Je ne comprend pas, eric crée une boucle avec comme condition "tant que choix = 0" mais il ne sera jamais égal à zéro vu que choix au début du programme a une valeur de 1, moi je ne comprend pas bien
    Ben le scanf sert à modifier choix.

  7. #7
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    ok merci mais je ne parvient toujours pas à comprendre l'utilité de la boucle car à la base choix=1 donc pourquoi faire une boucle (en tout cas en début de programme) pour voir si choix==0 ?

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hi,
    Citation Envoyé par Skyrunner
    Ben le scanf sert à modifier choix.
    Sauf que la condition de la boucle while étant fausse dès le départ, il ne passera jamais dans la boucle, donc ne verra pas le scanf.

  9. #9
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Eic2004 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if(choix<min)   //si on tape un nombre qui est le plus petit
                ....
            if(choix>max)  //si on tape un nombre qui devient le plus grand
                ....
    ni min ni max n'ont été initialisé. Leur valeur initiale devrait être la première valeur entrée par l'utilisateur

  10. #10
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    Sauf que la condition de la boucle while étant fausse dès le départ, il ne passera jamais dans la boucle, donc ne verra pas le scan
    C'est ca qui me gene, pourquoi faire un boucle qui ne marchera jamais ?

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par _SamSoft_
    C'est ca qui me gene, pourquoi faire un boucle qui ne marchera jamais ?
    Ca s'appelle un bug. Ca arrive et ça a déjà été signalé...

  12. #12
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    surement mais ca a pas été déjà dit dans ce sujet


  13. #13
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par _SamSoft_
    surement mais ca a pas été déjà dit dans ce sujet

    Bah, faut tout lire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /* -ed- Tu ne respectes pas ton commentaire. 
       D'autre part, = est l'opérateur d'affectation et non de comparaison.
       Tu veux sans doute ==, ou plutôt != pour respecter le commentaire...
       D'autre part, il faut connaitre le C un minimum. Quand un while 
       concerne plus d'une instruction, les { } sont obligatoires... */
        while(choix=0) //on demande tant qu'on ne rentre pas 0

  14. #14
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    je ne vois pas une remarque concernant l'utilité et l'efficacité de la boucle écrit explicitment en tout cas implicitement je peux à peu près la sentir

  15. #15
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Par défaut merci
    bon salut les amis j ai enfin resolut le probleme !! lol en grande partie grace a vous les amis !! alors j y tien a vous remercier !!
    voila 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #include <stdio.h>
    #include <stdlib.h>   
    #include <conio.h>   
     
    main ()   
    {   
         int min=0, max=0, choix=1;    //on initialise min et max à 0 
     
      printf ("================================================================================\n");
      printf ("            Calcul du minimum et Maximum d une suite d entiers                 \n");
      printf ("                            Debut  Du Programme                                 \n");
      printf ("================================================================================\n\n\n\n\n\n\n\n\n");
     
     
     
        while(choix!=0) //on demande tant qu'on ne rentre pas 0
        {
            puts ("entrer votre suite");
            scanf("%d",&choix);
            if(min==0 || max==0) //si min et max  ont comme valeur 0
              {
                min=choix;
                max=choix;
               }
            if(choix<min)   //si on tape un nombre qui est le plus petit   
                min=choix;    //il devient le plus petit ^^    
            if(choix>max)  //si on tape un nombre qui devient le plus grand   
                max=choix;   //il devient le plus grand
        }
     
        printf ("Min = ");printf ("%d\n",min);
        printf ("Max = ");printf ("%d\n\n\n\n\n\n\n\n",max);
     
      printf ("================================================================================\n");
      printf ("                           By eic2004                                   \n");
      printf ("                           Fin   Du Programme                                   \n");
      printf ("================================================================================\n");
        getch ();   
        //et là si tu veux tu affiche la valeur de min et max (avec printf)    
        return(0);   
    }

  16. #16
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ben non c'est pas bon.

    Parce que tu as initialisé min à 0, normalement on initialise min à une grande valeur (le max d'un int, me rappelle plus du nom).

  17. #17
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Eic2004
    bon salut les amis j ai enfin resolut le probleme !! lol en grande partie grace a vous les amis !! alors j y tien a vous remercier !!
    voila le code !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /* -ed- tu ne respectes pas ton algo. Je cite : 
     
    "Mettre le plus grand nombre possible dans MonPlusPetitNombre
     Mettre le plus petit nombre possible dans MonPlusPetitNombre"
     
    */
         int min=0, max=0, choix=1;    //on initialise min et max à 0
    Je n'arrive pas à comprendre pourquoi tu ne fais pas ce que tu as écrit dans ton algorithme. Tu ne le comprends pas ? C'est pas toi qui l'a écrit ? Tu ne connais pas INT_MIN et INT_MAX de <limits.h> ?

  18. #18
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par Skyrunner
    Ben non c'est pas bon.

    Parce que tu as initialisé min à 0, normalement on initialise min à une grande valeur (le max d'un int, me rappelle plus du nom).
    Ou directement à la première valeur, si on ne fait pas le calcul en même temps que la saisie...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 27/07/2006, 17h56
  2. min et Max dans un requete
    Par peppena dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/06/2006, 09h11
  3. Fonction MIN et MAX résultat improbable
    Par UNi[FR] dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 24/04/2006, 11h38
  4. taille min et max d'un div
    Par grinder59 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/02/2006, 17h46
  5. min et max
    Par sorinexp dans le forum Access
    Réponses: 6
    Dernier message: 28/11/2005, 19h37

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