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 :

Prog trouver un nombre !!!


Sujet :

C

  1. #1
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut Prog trouver un nombre !!!
    Bonjour,

    je souheterais faire un programme pour trouver un nombre , je vous donne ce que j'ai fait , car il y a des erreurs pouvez vous me les corriger ?
    Le voici :
    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>
    #define f() fflush (stdout)
     
    int main()
    {
    	int i,a,b;
    	do{
    	printf("Choisir un nombre entre 0 et 100 : \n");
    	scanf("%d",&a);
    	}while(a<=0 || a>=100);
     
    	{
    		printf("Entrer un nombre : \n");f();
    		scanf("%d",&b);
     
    		if (a<b)
    			printf("Trop grand : \n");f();
    		else
    		{
    			if (a>b)
    			printf("Trop petit : \n");f();
    		}
     
    	}
    	printf("Bravo,vous avez trouvé : \n");
     
    	return(0);
    }

    Merci a vous...

    PS: Les accolades ne tombent pas comme il faut lors du copier coller mais vous comprendrez..

    [Merci d'utiliser les balises Code et non pas les balises Citation - gangsoleil]

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    A mon avis, en recopiant tu as du oublier un do ... while(a != b), car on ne boucle pas
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut Re: Prog trouver un nombre !!!
    Bonjour,

    Ton code étant très mal indenté, il y a des problèmes que tu n'as probablement pas vu.

    C'est notamment le cas au niveau du if, comme le montre un compilateur bien réglé (j'ai nommé ton prgramme test.c) :
    > gcc -Wall -pedantic -ansi -O2 test.c
    test.c: In function `main':
    test.c:18: parse error before "else"
    test.c:6: warning: unused variable `i'
    test.c:24: warning: control reaches end of non-void function
    test.c: At top level:
    test.c:25: parse error before string constant
    test.c:25: warning: type defaults to `int' in declaration of `printf'
    test.c:25: warning: conflicting types for built-in function `printf'
    test.c:25: ISO C forbids data definition with no type or storage class
    >
    VOici ton code indenté de facon correcte :
    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
     
    #include <stdio.h>
    #define f() fflush (stdout)
     
    int main()
    {
    	int i,a,b;
    	do{
    	printf("Choisir un nombre entre 0 et 100 : \n");
    	scanf("%d",&a);
    	}while(a<=0 || a>=100);
     
    	{
    		printf("Entrer un nombre : \n");
          f();
    		scanf("%d",&b);
     
    		if (a<b)
    			printf("Trop grand : \n");
             f();
    		else
    		{
    			if (a>b)
    			printf("Trop petit : \n");
             f();
    		}
     
    	}
    	printf("Bravo,vous avez trouvé : \n");
     
    	return(0);
    }
    Ton problème se situe ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (a<b)
    	printf("Trop grand : \n");
    f();
    else
    Ton else ne correspond à aucun if. Si tu veux exécuter plusieurs instructions suite à un test, il faut absolument faire un bloc d'instructions, ce qui se déclare en C avec des accolades :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (a<b)
    {
    	printf("Trop grand : \n");
       f();
    }
    else
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Ah oui, tu as aussi un problème de conception dans ton code, puisque celui-ci ne boucle pas comme tu le voudrais :

    Il boucle sur la première saisie, si on saisie un nombre en dehors des bornes, mais il manque une autre boucle (et la sortie de boucle également) qui permet de continuer tant que le nombre n'a pas été trouvé.

    Dernier point : scanf est déconseillé, sauf dans certains cas particuliers. Le site d'Emmanuel Delahaye te fournira de nombreux conseils très utiles sur la saisie : http://emmanuel-delahaye.developpez.com
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    Voici avec quelques corrections
    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>
    #define f() fflush (stdout)
     
    int main()
    {
    	int i,a,b;
    	do{
    	printf("Choisir un nombre entre 0 et 100 : \n");
    	scanf("%d",&a);
    	}while(a<=0 || a>=100);
     
     
    	{
    		printf("Entrer un nombre : \n");f();
    		scanf("%d",&b);
     
    		if (a<b)
    		{
    			printf("Trop grand : \n");f();
    		}
    		else
    		{
    			if (a>b)
    			printf("Trop petit : \n");f();
    		}
     
    	}
    }

    Je ne comprend pas ou situer la boucle par contre... et il trouve des erreurs ligne 6 dans le int et dans la derniere acolade ligne 28..

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Pose-toi la question en faisant tourner le prog à la main, c'est assez facile.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    Je sais qu'il faut utiliser un for mais c'est tout..

  8. #8
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Pour le problème sur ton code, des réponses t'ont été apportées.

    Le code que tu as posté n'est pas encore correct :
    > gcc -Wall -pedantic -ansi -O2 test.c
    test.c: In function `main':
    test.c:6: warning: unused variable `i'
    test.c:28: warning: control reaches end of non-void function
    Tu n'utilises pas la variable i, donc pas la peine de la déclarer.
    Le type de retour de main est int, il faut donc que ton programmes retourne une valeur, ce qui se fait via "return".

    Pour ce qui est du problème de conception de l'algorithme, le bon forum est le forum "algorithme", pas le forum C.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par wareq
    Je sais qu'il faut utiliser un for mais c'est tout..
    Absolument pas, tu dois boucler tant que l'utilsateur n'a pas trouvé, donc ...
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Prog trouver un nombre !!!
    Citation Envoyé par wareq
    je souheterais faire un programme pour trouver un nombre , je vous donne ce que j'ai fait , car il y a des erreurs pouvez vous me les corriger ?
    Remarques et commentaires (-ed-). [En retard, suite à coupure de courant...)]
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    #include <stdio.h>
     
    /* -ed-
       #define f() fflush (stdout)
       Non. Obfuscation inutile.
       De plus, fflush() stdout est inutile apres un "\n".
     
       <a href="http://emmanuel-delahaye.developpez.com/notes.htm" target="_blank">http://emmanuel-delahaye.developpez.com/notes.htm</a>
     
       suppression
     */
     
    int main ()
    {
       int
       /* -ed-
          i,
     
          variable non utilisee...
     
        */
         a, b;
       do
       {
          printf ("Choisir un nombre entre 0 et 100 : \n");
     
          /* -ed-
             fonction de saisie extremement fragile,
             surtout quand elle est mal utilisee...
     
             (tape 'a<enter>', pour voir...)
     
             <a href="http://emmanuel-delahaye.developpez.com/notes.htm" target="_blank">http://emmanuel-delahaye.developpez.com/notes.htm</a>
             <a href="http://emmanuel-delahaye.developpez.com/notes.htm" target="_blank">http://emmanuel-delahaye.developpez.com/notes.htm</a>
     
           */
          scanf ("%d", &a);
          /* -ed-
             si tu y tiens, il faut tester la valeur retournee et agir en
             consequence ...
           */
       }
     
       /* -ed-
          pas coherent. Tu demande 0 a 100 et tu n'acceptes
          que 1 a 99... Revoir le test.
        */
       while (a <= 0 || a >= 100);
     
       {
          printf ("Entrer un nombre : \n");
          scanf ("%d", &b);
     
          if (a < b)
             printf ("Trop grand : \n");
          else
          {
             if (a > b)
                printf ("Trop petit : \n");
          }
     
       }
       printf ("Bravo,vous avez trouvé : \n");
    /* -ed-
     manque une boucle quelque part... avec un compteur d'essais,
     (le fameux i non utilise ?)
     */
     
     
    /* -ed-
       return (0);
       
       parentheses inutiles (return n'est pas une fonction)
     */
     
       return 0;
    }
    Pose des questions si tu ne comprends pas.
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. Trouver le nombre de mots
    Par acik59 dans le forum C
    Réponses: 13
    Dernier message: 06/06/2007, 23h11
  2. Réponses: 10
    Dernier message: 14/04/2007, 18h57
  3. [débutant]Trouver des nombres premiers
    Par Sébastien L dans le forum Langage
    Réponses: 17
    Dernier message: 19/10/2006, 12h21
  4. Réponses: 7
    Dernier message: 20/07/2006, 10h29
  5. Trouver le nombre de handle utiliser par un programme
    Par chuckboy dans le forum Windows
    Réponses: 1
    Dernier message: 19/12/2005, 23h38

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