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 :

programme deviner un nombre


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 23
    Par défaut programme deviner un nombre
    Bonjour j'aurais besoin d'aide pour mon programme, voici l'exercice :

    Ecrire un algorithme qui choisi au hasard un nombre entre 1 et 100 mais ne l'affiche pas. Pour trouver le nombre secret le programme n'indique que "trop petit";"trop grand". A la fin de la partie le programme affiche "gagné".

    J'ai deja commencer a l'élaboration du programme ce qui donne sa :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    void Rand(){
    int R;
    R == rand()%100;
    scanf("%d", &R);
    }
     
    int main(){
    int N;
    int R;
    printf("Entrez un nombre :");
    scanf("%d", &N);
     
    Rand();
     
    if (N<Rand());
    else if (printf("TROP PETIT \n"));
     
    if (N>Rand());
    else if (printf("TROP GRAND \n"));
     
    if (N=Rand());
    else if (printf("GAGNER \n"));
     
    return 0;
    }
    mais voila en compilant le programme j'ai un message d'érreur affichant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    In function ‘main’:
    rand.c:18: error: void value not ignored as it ought to be
    rand.c:21: error: void value not ignored as it ought to be
    rand.c:24: error: void value not ignored as it ought to be
    j'aimerais pouvoir résoudre ce petit problème si cela est possible

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Rand(){
    int R;
    R == rand()%100;
    scanf("%d", &R);
    }
    Il y a beaucoup à dire sur le reste du code également, mais commence par être logique avec toi-même et écrire la fonction que tu vas utiliser correctement.

    Comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f (N<Rand());
    else if (printf("TROP PETIT \n"));
    - Comparer un int à un void ?!
    - pourquoi un else if ? un simple else ne suffit pas ?

    A cela, ajoutons qu'il s'agit de code C et non C++.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Par défaut
    les erreurs sont due au fait que dans ton test "if" tu compare un avec un .

    d'autre part le code est faux.

    je te suggére plutôt ce 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
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main ()
    {
     
      int iScret, idevine;
     
      /* initialisation du rand */
      srand ( time(NULL) );
     
      /* generer nombre secret : */
      iScret = rand() % 100 + 1;
     
      do {
     
    		printf ("devinez le nombre: ");
    		scanf ("%d",&idevine);
     
    		if (iScret<idevine) puts ("Trop grand");
     
    		else if (iScret>idevine) puts ("Trop petit");
     
    	} while (iScret!=idevine);
     
      puts ("Gagne");
      return 0;
    }
    sa vient de la référence c++.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 23
    Par défaut
    Merci pour votre aide , je vais tester et voir ce que sa donne

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par nabil_cube Voir le message
    sa vient de la référence c++.
    Ce code est donné dans un bouquin "référence C++" ?
    - puts -> std::cout
    - scanf -> std::cin
    - stdio.h, stdlib.h -> iostream
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 23
    Par défaut
    Alors voila, suite aux réponse que j'ai pu recevoir, je suis arriver a ce programme :


    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main(){
    int N;
    int D;
     
    srand(time(NULL));
    N = rand() %5+1;
     
    do{
    printf("Choississez un nombre entre 0 et 10 :");
    scanf("%d", &D);
     
    if (N<D);
    else (printf("TROP PETIT \n"));
     
    if(N>D);
    else (printf("TROP GRAND \n"));
     
    }while (N!=D);
    printf("GAGNER \n\n");
    return 0;
    }
    mais voila , quand je trouve le chiffre "mystère" cela ne m'affiche pas que GANER , mai sa m'affiche TROP PETIT , TROP GRAND et GAGNER !
    J'aimerai bien pouvoir afficher que GAGNER au final mai je ne trouve aucun moyen :/ si quelqu'un aurait une solution a me proposer s'il vous plait .

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Tu devrais sérieusement relire les premiers paragraphes d'un cours/livre à propos de syntaxe du langage.
    Tes if/else sont faux, et ce que tu décris est l'exacte représentation du code que tu donnes.

    Rappel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (condition)
    {
      // ici la condition est vraie
    }
    else if (condition 2)
    {
      // ici condition 2 est vraie (ce qui implique que condition était faux)
    }
    ...
    else
    {
      // ici aucune des conditions ci-dessus n'est vraie
    }
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 23
    Par défaut
    Bah personnelement, je suis actuellement en BTS SIO première anné, on a jamais vu d'autre syntaxe que ceux la , on nous a jusquau maintenant appris que cela.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (N<D);
    else (printf("TROP PETIT \n"));
    Cela m'étonnerait qu'un professeur ait donné cette syntaxe.
    Elle n'est pas fausse dans l'absolue, mais n'a aucun intérêt.

    - si N est inférieur à D, alors on fait rien
    - sinon on affiche quelque chose
    Tu n'as écrit que ça, ce qui n'a aucun sens et traduit ton "comportement étrange" parfaitement expliqué par la lecture de ce code.
    Les parenthèses autour du printf sont tout bonnement inutiles également.

    Donc, relis tes cours, il y a de toute évidence quelque chose que tu as lu de travers, ou écrit de travers au préalable. Mais clairement j'aurais du mal à imaginer qu'un professeur ait fournit ce code comme fonctionnel et exemple à suivre.

    Ce code aurait sa place dans un devoir pour "retrouver les erreurs" ou dans un cours en tant que "code torchon à ne surtout pas reproduire".
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Par défaut
    sa ne viens pas d'un bouquin c'est plutôt d'un site web:

    http://www.cplusplus.com/reference/c.../cstdlib/rand/

  11. #11
    Membre émérite
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Par défaut
    Bonsoir,

    Citation Envoyé par nabil_cube Voir le message
    sa ne viens pas d'un bouquin c'est plutôt d'un site web:

    http://www.cplusplus.com/reference/c.../cstdlib/rand/
    Tu es dans la partie "C" de cppreference. Pour savoir si tu as affaire à du C++, passe par cette page :

    http://www.cplusplus.com/reference/

    Sinon, pour être passé par cppreference avant, j'ai fais un bon avec la faq de developpez à l'époque

    http://cpp.developpez.com/faq/cpp/

    Il y a aussi ce cours qui me semble bien organisé pour un débutant :
    http://cpp.developpez.com/cours/cpp/

  12. #12
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Les entrées sorties en C++ se font avec les flux (std::cin, std::cout entre autres).

    ; est une instruction. En l'absence d'accolade, le bloc du if (ou du else) se résume à une ligne.

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (N<Rand());
    else if (printf("TROP PETIT \n"));
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (N<Rand())
    {
       ;
    }
    else if (printf("TROP PETIT \n"))
    {;
    }
    Même si les profs ne sont pas forcément les plus en pointes en C++, j'ai de gros doute que cela soit ce type de construction qu'il enseigne
    La réponse un peu plus haut de Bousk est la bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (condition)
    {
      // ici la condition est vraie
    }
    else if (condition 2)
    {
      // ici condition 2 est vraie (ce qui implique que condition était faux)
    }
    ...
    else
    {
      // ici aucune des conditions ci-dessus n'est vraie
    }

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 23
    Par défaut
    Merci a tous de votre aide, grace a cela j'ai pu reussir a faire la première partie de mon programme
    LA deuxieme partie veu qu'on limite le nombre de tentative a 10 , j'aimerais savoir si on peut utiliser l'instruction "break" dans la boucle while ?

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    break peut être utilisé pour sortir d'un switch, ou de n'importe quelle boucle (for, while, do...while)
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 23
    Par défaut
    okey merci j'essaierai pour voir se que sa donne

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

Discussions similaires

  1. Programme qui devine le nombre auquel vous pensez (VBA)
    Par Ihaveadream dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 26/12/2012, 13h05
  2. Réponses: 9
    Dernier message: 08/01/2012, 17h57
  3. Programme détectant les nombres premiers
    Par frankthechamp dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/12/2008, 22h41
  4. programme python : conversion nombre en chaine de caracteres
    Par koala_64 dans le forum Général Python
    Réponses: 6
    Dernier message: 02/11/2007, 21h10
  5. algorithme pour programmation linéare en nombre entier
    Par kious dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 03/05/2006, 09h17

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