Partage
  • Partager sur Facebook
  • Partager sur Twitter

qcm avec note a la fin

variable pointeur ?

Sujet résolu
    1 mars 2006 à 9:18:30

    Bonjour, je suis en train de faire une sorte de mini QCM en C, et j'aimerai que, a la fin du qcm, une note soit afficher suivant les réponses vrai ou juste:

    main.c
    #include <stdio.h>
    #include <stdlib.h>
    #include "fonction.h"

    long reponse = 0, reponseEntree = 0;

    int main(int argc, char *argv[])

    {
    reponse = 2;
    printf("question numero 1... reponse: 1 ou 2 ou 3\n\n");
    scanf("%ld", &reponseEntree);
    correction(reponseEntree, reponse);
    printf("\n\n");

    reponse = 3;
    printf("question numero 2... reponse: 1 ou 2 ou 3\n\n");
    scanf("%ld", &reponseEntree);
    correction(reponseEntree, reponse);
    printf("\n\n");
    system("PAUSE");
    return 0;
    }


    fonction.c
    void correction(long FreponseEntree, long Freponse)
    {
    if (FreponseEntree != Freponse)
    {
    printf ("faux");
    }
    else // Sinon...
    {
    printf ("vrai");
    }
    }

    fonction.h
    void correction(long FreponseEntree, long Freponse);


    Donc je voudrai que a chaque fois que ma fonction correction affiche vrai, donc que reponseEntree = a reponse, une variable note augmente de 1, puis a la fin j'affiche cette variable note, donc si l'utilisateur a eu 2 réponses juste sur 2 elle afichera 2... comment faire ? faut-il utiliser les pointeurs ? suis-je un gros boulet ?


    Si je ne me suis pas bien expliquer dans ce post, je m'en excuse, faites-le moi signaler en répondant, ben sinon merci de m'expliquer comment faire :).
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      1 mars 2006 à 10:25:56

      Tu peux faire ca avec une variable globale si les pointeurs t'ennuyent, et a chaque fois que la réponse est bonne, tu l'incrémente
      • Partager sur Facebook
      • Partager sur Twitter
        1 mars 2006 à 10:29:01

        Ben justement j'aimerai utiliser les pointeurs pour m'entrainer... si je prends les pointeurs ça donnerai quoi dans le code ?
        • Partager sur Facebook
        • Partager sur Twitter
          1 mars 2006 à 12:10:18

          Tu pourrais faire ainsi :

          Prototype : void correction(char vrai, char faux);

          Puis dans main tu fais une structure conditionnele du type :
          - si vrai, j'appelle correction avec pour paramètres (1, 0);
          - si faux, j'appelle correction avec pour paramètres (0, 1);

          Et dans correction tu en fais une autre :

          int note = 0;
          int* p_note = &note;

          if (vrai)
              note++;
          else ;


          Et à la fin tu affiche le pointeur déférencé dans main.

          Voilà je crois que je ferais quelquechose du genre.

          Good Luck !

          ++
          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2006 à 12:17:49

            Ok merci, apres réfléxion j'ai trouvé mieu, j'abandonne la programmation :) C'est carément mieu. Fini le C, fini le C++ ( avant d'avoir commencer lol ), c'est trop dur, je vai me contenter du HTML pour les sites.
            • Partager sur Facebook
            • Partager sur Twitter
              1 mars 2006 à 12:20:06

              Meeeeuuuh non ! Pourquoi donc ?
              • Partager sur Facebook
              • Partager sur Twitter
                1 mars 2006 à 12:27:36

                Je te l'explique par mp.
                • Partager sur Facebook
                • Partager sur Twitter
                  2 mars 2006 à 8:49:16

                  alors.. quelqu'un saurai comment résoudre mon problème grace a des pointeurs par exemle ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    2 mars 2006 à 9:52:39

                    Déja créé une variable long score dans ton main.

                    Si tu veux le faire avec les pointeurs, tu envoie un 3eme paramètre (l'adresse de score) à la fonction "correction()". Du coup dans la fonction "correction()" tu as un pointeur sur ta variable score.
                    apres tu rajoute les points gagné grace à ce pointeur !

                    Pour savoir comment envoyer l'adresse d'une variable à une fonction, ou comment utiliser un pointeur pour modifier la valeur de cette variable, http://www.siteduzero.com/tuto-3-3828-1-a-l-assaut-des-pointeurs.html#ss_part_3


                    Sinon y'a aussi une solution sans pointeur et sans variable globale.
                    Il suffit de faire retourner à la fonction correction() un long qui correspond au nombre de points gagnés.
                    Et on rajoute ca au score.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 mars 2006 à 10:01:55

                      Mias comment augmenter la valeur d'une variable grace a un pointeur ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        2 mars 2006 à 10:39:46

                        Regarde l'exemple de mateo.

                        void triplePointeur(long *pointeurSurNombre);

                        int main(int argc, char *argv[])
                        {
                            long nombre = 5;

                            triplePointeur(&nombre); // On envoie l'adresse de nombre à la fonction
                            printf("%ld", nombre); // On affiche la variable nombre. La fonction a directement modifié la valeur de la variable car elle connaissait son adresse

                            return 0;
                        }

                        void triplePointeur(long *pointeurSurNombre)
                        {
                            *pointeurSurNombre *= 3; // On multiplie par 3 la valeur de la variable nombre
                        }




                        La fonction "triple pointeur" triple la valeur de la variable grace a un pointeur.
                        Toi tu veux ajouter à ta variable.
                        Alors tu change la multiplication en addition

                        j'te donenrais pas le code tout fait ^^
                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 mars 2006 à 10:52:44

                          Bon bon bon...
                          fonction.c:

                          else // Sinon...
                              {
                              *pointeur += 1 ;
                              printf ("vrai");   
                              }

                          main.c:

                          correction(reponseEntree, reponse, &note);

                          Quand j'afiche printf("%ld", note;) y marche suivant le nombre de vrai qu'il y a eu, donc tout marche bien, vu le temps que j'y ai passé dessus j'ai le démon, j'avais juste quand j'éssayais dans main c'est juste dans ma fonction ou je mettais un mauvais code pour augmenter la valeur de note... donc j'ai passé plusieurs demi-heures pour un truc comme ça.. j'ai envie de prendre une batte et tout cassé mais on va mettre ça sur le compte du débutant en pointeur...

                          Merci bien Annacconda :)
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            2 mars 2006 à 13:14:26

                            ou bien meme

                            *pointeur++;
                            • Partager sur Facebook
                            • Partager sur Twitter
                              2 mars 2006 à 13:17:20

                              j'ai éssayé marchais pas puor ça j'ai posté :(
                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 mars 2006 à 13:22:20

                                *pointeur++ = *(pointeur + 1)
                                (*pointeur)++ = ++*pointeur = *pointeur + 1
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  2 mars 2006 à 13:26:09

                                  main.c
                                  #include <stdio.h>
                                  #include <stdlib.h>
                                  #include "fonction.h"

                                  long reponse = 0, reponseEntree = 0;

                                  int main(int argc, char *argv[])

                                  {
                                  reponse = 2;
                                  printf("question numero 1... reponse: 1 ou 2 ou 3\n\n");
                                  scanf("%ld", &reponseEntree);
                                  correction(reponseEntree, reponse);
                                  printf("\n\n");

                                  reponse = 3;
                                  printf("question numero 2... reponse: 1 ou 2 ou 3\n\n");
                                  scanf("%ld", &reponseEntree);
                                  correction(reponseEntree, reponse);
                                  printf("\n\n");
                                  system("PAUSE");
                                  return 0;
                                  }


                                  fonction.c
                                  void correction(long FreponseEntree, long Freponse)
                                  {
                                  if (FreponseEntree != Freponse)
                                  {
                                  printf ("faux");
                                  }
                                  else // Sinon...
                                  {
                                  printf ("vrai");
                                  }
                                  }

                                  fonction.h
                                  void correction(long FreponseEntree, long Freponse);


                                  Voila j'ai rien changer mais c'est plus zoli comme sa lol
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  qcm avec note a la fin

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown