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 :

Création question-réponse en C


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 0
    Points
    0
    Par défaut Création question-réponse en C
    Bonjour,

    Après avoir pris les bases de la programmation en C et les avoir mises en œuvre dans des petits programmes simples, j'essaye de créer un petit programme de question réponse dans le terminal ( je programme sous linux Ubuntu ).

    Algorithme du programme : après exécution du programme, le terminal affiche une question et deux réponse ( oui ou non ) qui seraient choisies par O pour oui et N pour non. Puis, le programme donne une réponse.

    Voici mon programme brouillon, je pense qu'il y a quelques erreurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    void main
    {
     
    printf("f\ Allez vous bien ? n\ O : oui, N : non ");
     
    	if( o = 1 ){ printf("f\ Excellent ");};
            else { printf ("f\ Dommage ");};
    while (true)
    }
    J'aimerai que vous me disiez où vous voyez les erreurs car la compilation ne marche pas. ( Je doute pas mal du " y=1 " )

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wakiza Voir le message
    Bonjour,

    Après avoir pris les bases de la programmation en C et les avoir mises en œuvre dans des petits programmes simples, j'essaye de créer un petit programme de question réponse dans le terminal ( je programme sous linux Ubuntu ).

    Algorithme du programme : après exécution du programme, le terminal affiche une question et deux réponse ( oui ou non ) qui seraient choisies par O pour oui et N pour non. Puis, le programme donne une réponse.

    Voici mon programme brouillon, je pense qu'il y a quelques erreurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    void main
    {
     
    printf("f\ Allez vous bien ? n\ O : oui, N : non ");
     
    	if( y = 1 ){ printf("f\ Excellent ");};
            else { printf ("f\ Dommage ");};
    while (true)
    }
    J'aimerai que vous me disiez où vous voyez les erreurs car la compilation ne marche pas. ( Je doute pas mal du " y=1 " )

    Merci d'avance.
    Bonjour
    Voici les erreurs que je releve apres une rapide lecture
    1. La fonction main n'a pas ses parentheses indiquant son etat de fonction
    2. La fonction main est de type int et non void (elle a possibilite de renvoyer une valeur numerique qui pourra servir a l'appelant)
    3. Tu poses une question impliquant une reponse O ou N mais tu testes sur 1 ou pas 1
    4. Ton test sur 1 (tu as raison de douter) n'est pas un test mais une affectation
    5. Tu poses la question mais tu n'offres pas a l'utilisateur de saisie pour pouvoir repondre


    Bon courage pour la suite qui ne peut, j'espere, qu'aller en s'ameliorant

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    J'ai bien compris tes réponses, mais je ne vois pas comment les mettre en œuvre dans le programme ?

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    [*]La fonction main n'a pas ses parentheses indiquant son etat de fonction[*]La fonction main est de type int et non void (elle a possibilite de renvoyer une valeur numerique qui pourra servir a l'appelant)[*]Tu poses une question impliquant une reponse O ou N mais tu testes sur 1 ou pas 1[*]Ton test sur 1 (tu as raison de douter) n'est pas un test mais une affectation[*]Tu poses la question mais tu n'offres pas a l'utilisateur de saisie pour pouvoir repondre[/LIST]
    Citation Envoyé par wakiza Voir le message
    J'ai bien compris tes réponses, mais je ne vois pas comment les mettre en œuvre dans le programme ?
    1) Obvious.
    2) Obvious aussi.
    3) La réponse est 'O' ou 'N', pourquoi tester y=1 ? Il faut tester que la réponse est 'O' ou 'N'.
    4) y=1 n'est pas un test, c'est une affectation. y==1 est un test. Mais il faudrait pour cela que la variable y soit déclarée, ce n'est pas le cas.
    5) (presque) Obvious. Comment l'utilisateur répond-il oui ou non dans ton code ? Voir getc dans ton cas.

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wakiza Voir le message
    Citation Envoyé par wakiza Voir le message
    Après avoir pris les bases de la programmation en C et les avoir mises en œuvre dans des petits programmes simples...
    J'ai bien compris tes réponses, mais je ne vois pas comment les mettre en œuvre dans le programme ?
    Peut-etre, entre autres, en faisant l'effort d'ouvrir au-moins une fois un livre de C. Parce que commencer par dire "j'ai appris" et "j'ai deja ecrit" va a l'encontre du fait "je ne sais pas comment rajouter des parentheses a la fonction main" Ils compilaient tes "petits programmes simples" ???

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Je suis en première année BTS systèmes électronique et j'ai un cours sur les structures de base en C ( tel que les structures do-while, if-else ... ) mais pour compiler des programmes, nous utilisions un logiciel particulier ( MPLAB ) et nos programmes simples sont par exemple la programmation des sec, min, heures d'une montre digitale, des incrémentations, des affichages sur petits écran LCD avec une interaction utilisateur/programmation via un PIC.

    J'ai essayé de programmer avec le logiciel Visual plus 2008 sous XP, Mais la syntaxe n'est pas la même que sur le MPLAB ( où par exemple le "void main" commence tout les programmes et la compilation se fait sans problème ) et je ne trouve pas de tutoriel détaillé.

    Donc vous l'aurez compris, c'est la première fois que je tente de programmer à partir de l'éditeur de texte de linux ( en aillant précisé que ce n'est pas du texte brut mais du C. ) Donc forcément, je n'ai pas une grosse expérience donc lorsque quelqu'un d'expérimenté m'explique ma faute, oui je comprends, mais je ne vois pas forcément comment le mettre en œuvre de part ma maigre expérience scolaire du C dont j'aimerai étoffer l'efficacité en faisant des programmes par moi même.

    Après cette explication, je vais tenter de corriger mais soyez indulgent, c'est tout ce que je demande.

    Pour l'histoire du main, si j'ai bien compris, ça donne cela :

    ?

    Et donc j'ai bien compris que le brouillon ne donne pas la possibilité à l'utilisateur de réponse. Mais comment faire en sorte qu'il puisse y avoir interaction ? Car pour moi le "o=1", ( d'ailleurs excusez moi, j'ai fais une erreur d'étourdissement en mettant y au lieu de o, j'édit ça maintenant ) ça voulait signifier que si l'utilisateur appuie sur O, la réponse envoyée au programme serait "oui" donc il répondrait en conséquence comme prévu dans la structure if-else. J'ai aussi bien compris que le "o=1" est une affectation donc je vous demande comment je pourrai faire pour écrire le fonctionnement que j'ai décris précédemment. Faudrait-il simplement que je mette " o==1 " pour que le fonctionnement soit bon ?

    Donc si j'ai bien compris vos remarques, ça donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    int main ();
    {
     
    printf("f\ Allez vous bien ? n\ O : oui, N : non ");
     
    	if( 0==1 ){ printf("f\ Excellent ");};
            else { printf ("f\ Dommage ");};
    while (true)
    }
    Merci d'avance pour votre compréhension et votre aide.

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 163
    Points
    17 163
    Par défaut
    ca serait plus :
    pour boucler indéfiniement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    do {
    /* ce que tu veux */
    } while (true);
    pour interrompre la boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(/*condition d'arret*/) break;

    pour lire un caractère:
    pour vérifier que le caratère lu est un O:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ( c=='O' || c=='o') {
    /*la encore, ce que tu veux*/
    }

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Merci de ta réponse constructive et détaillée, leternel.

    Ici, logiquement, la boucle ne devrait pas être infinie mais unique donc je placerai un "if-break" à la place du "if" seul. Pour ce qui est de la lecture de caractère, dois-je placer la syntaxe dans le if ou en dehors ?

    Je propose une correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
     
    int main ();
    {
    char c;
    c=getc();
     
    printf("f\ Allez vous bien ? n\ O : oui, N : non ");
     
    	if( c=='o' ){ printf("f\ Excellent ");};
            else { printf ("f\ Dommage ");};
    while (true)
    }

  9. #9
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Points : 5 381
    Points
    5 381

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Points : 451
    Points
    451
    Par défaut
    Avant de parler de syntaxe (les ";" semblent avoir été mis un peu au hasard)

    Il convient que tu t'interroges sur la "logique" de ton programme :
    - est-que ça a un sens de lire la réponse avant d'avoir posé la question?
    - est-que ça a un sens de tester si c est égal à 'o' ou à... 'o'
    - est-que ça a un sens de mettre une boucle infinie qui ne fait rien à la toute fin du programme?

    Pour t'éviter de perdre du temps avec quelque chose de moins crucial, dans une séquence d'échappement le '\' se place en premier, ainsi il ne faut pas écrire "f\" et "n\" mais "\f" et "\n"

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wakiza Voir le message
    Ici, logiquement, la boucle ne devrait pas être infinie mais unique
    Logiquement une boucle n'est faite que pour repeter "n" fois un ensemble d'instructions. Si la boucle ne boucle qu'une fois, alors elle n'a pas de raisons d'etre. Dans l'enonce de ton premier post
    Algorithme du programme : après exécution du programme, le terminal affiche une question et deux réponse ( oui ou non ) qui seraient choisies par O pour oui et N pour non. Puis, le programme donne une réponse.
    il n'est absolument pas fait mention d'une quelconque repetition de quoi que ce soit...

    Citation Envoyé par wakiza Voir le message
    donc je placerai un "if-break" à la place du "if" seul.
    "if-break" et "if seul" ca ne veut rien dire. Un "if" (lequel est toujours seul) sert a evaluer un cas particulier pour, si le cas se produit, effectuer une action precise. L'action en question peut-etre eventuellement un break si le but du programmeur est de sortir d'une boucle eventuelle (boucle englobant ledit "if") lorsque le cas se produit...

    Citation Envoyé par wakiza Voir le message
    Pour ce qui est de la lecture de caractère, dois-je placer la syntaxe dans le if ou en dehors ?
    Le if etant la pour verifier si le caractere lu est 'o' ou 'O', il sera place forcement apres ladite lecture du caractere, ladite lecture etant donc forcement en dehors du if (juste avant pour etre plus precis)...

    Citation Envoyé par wakiza Voir le message
    et je ne trouve pas de tutoriel détaillé.
    On t'a deja donne 2 tutoriels C. Toutefois il faudrait que tu en cherches un dedie a l'algorithmique. C'est la methode permettant de transformer une solution litterale en solution informatique basee sur des ordres simples. Ensuite, te suffit de traduire les ordres dans le langage que tu veux (C, Pascal, COBOL, python) pour pouvoir ecrire ton programme...

Discussions similaires

  1. [AC-2007] Création de jeu (questions/réponses)
    Par adameteve dans le forum Modélisation
    Réponses: 1
    Dernier message: 17/10/2011, 13h42
  2. POO : Création d'un système question/réponses
    Par Kenshin_Himura dans le forum Langage
    Réponses: 0
    Dernier message: 03/05/2010, 23h49
  3. Conseils pour l'écriture de questions/réponses pour les FAQ
    Par LittleWhite dans le forum Contribuez
    Réponses: 0
    Dernier message: 18/05/2006, 19h15

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