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 :

Difficulté pour écrire un programme sur un " Exercice de Multiplication "


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Informatique de gestion
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de gestion

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut Difficulté pour écrire un programme sur un " Exercice de Multiplication "
    Bonjour,

    je suis étudiant en " Informatique de Gestion " depuis octobre 2012 et je débute dans ce domaine, s'il y a un problème de lisibilité ou que vous voulez plus de détail, je vous fournirais ça, merci par avance.


    Je dois écrire un programme qui doit proposer à l'utilisateur 5 exercice de multiplication. Les nombres choisis doivent être en " Entier " et entre 1 à 20.

    Au cas ou la réponse donner pas l'utilisateur serait VRAI, le programme doit féliciter l'utilisateur et attribue 2 points.

    Dans le cas contraire, le programme dit qu'il y a une ERREUR et lui ou elle enlève 0,5 point.


    Le programme doit utiliser des variables dites " Locale " aussi.


    Voici ce que j'ai fais, j'aimerais savoir ou j'ai fait des erreurs et ce que je pourrais faire pour améliorer ça :

    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
        #include <stdio.h>
        #include <mylib.h>
     
        long int total;
     
        /*============================================================*/
                                    int main ()
        /*============================================================*/
     
       {
        cls (NOIR);
        printf ("                           Exercice de multiplication\n");
        printf ("                           ==========================\n\n");
     
     
        long int reponseN1 = 0;
     
        printf ("19 * 20 == ", reponseN1);
        long int (&reponseN1, 4, 33, 4, 1, 999);
        total = 19 * 20;
        gotoxy(4, 1);
     
     
        long int reponseN2 = 0;
     
        printf ("16 * 17 == ", reponseN2);
        long int (&reponseN2, 6, 33, 4, 1, 999);
        total = 16 * 17;
     
     
        long int reponseN3 = 0;
     
        gotoxy(6, 1);
        printf ("18 * 11 == ", reponseN3);
        long int (&reponseN3, 8, 33, 4, 1, 999);
        total = 18 * 11;
     
     
        long int reponseN4 = 0;
     
        gotoxy(8, 1);
        printf ("17 * 15 == ", reponseN4);
        long int (&reponseN4, 10, 33, 4, 1, 999);
        total = 17 * 15;
        gotoxy(10, 1);
     
     
        long int reponseN5 = 0;
     
        printf ("20 * 20 == ", reponseN5);
        long int (&reponseN5, 12, 33, 4, 1, 999);
        total = 20 * 20;
        gotoxy(12, 1);
     
     
        system ("pause");
        return 0;
     
       }        /* end main     */
     
     
     
     
    /*                                  Pseudo-Code                                 *//*
     
     
    écrire " Exercice de multiplication "
     
     
    écrire " 19 * 20 = "
    lire RéponseN1
     
    écrire " 16 * 17 = "
    lire RéponseN2
     
    écrire " 18 * 11 = "
    lire RéponseN3
     
    écrire " 17 * 15 = "
    lire RéponseN4
     
    écrire " 20 * 20 = "
    lire RéponseN5
     
     
     
    SI RéponseN1 = 380 (V)
    ALORS calculer 380 <-- 19 * 20
    affecter " Félicitation, la réponse est correcte et vous gagnez 2 points. "
     
    SINON
    SI RéponseN1 <> 380 (V)
    ALORS Affecter " Erreur, la réponse est incorrecte et vous perdez 0,5 point. "
     
     
     
    SINON
    SI RéponseN2 = 272 (V)
    ALORS calculer 272 <-- 16 * 17
    affecter " Félicitation, la réponse est correcte et vous gagnez 2 points. "
     
    SINON
    SI RéponseN2 <> 272 (V)
    ALORS Affecter " Erreur, la réponse est incorrecte et vous perdez 0,5 point. "
     
     
     
    SINON
    SI RéponseN3 = 198 (V)
    ALORS calculer 198 <-- 18 * 11
    affecter " Félicitation, la réponse est correcte et vous gagnez 2 points. "
     
    SINON
    SI RéponseN3 <> 198 (V)
    	ALORS Affecter " Erreur, la réponse est incorrecte et vous perdez 0,5 point. "
     
     
     
    SINON
    SI RéponseN4 = 255 (V)
    ALORS calculer 255 <-- 17 * 15
    affecter " Félicitation, la réponse est correcte et vous gagnez 2 points. "
     
    SINON
    SI RéponseN4 <> 255 (V)
    ALORS Affecter " Erreur, la réponse est incorrecte et vous perdez 0,5 point. "
     
     
     
    SINON
    SI RéponseN5 = 400 (V)
    ALORS calculer 400 <-- 20 * 20
    affecter " Félicitation, la réponse est correcte et vous gagnez 2 points. "
     
    SINON Affecter " Erreur, la réponse est incorrecte et vous perdez 0,5 point. "
     
     
    FINSI (*10)
     
     
    *//*                                      Fin                                     */





    Merci d'avance à tous.

  2. #2
    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
    1- La variable total n'est pas locale, ce qui est contraire à l'énoncé.

    2- printf ("19 * 20 == ", reponseN1); Si printf() possède 2 arguments, la chaine et reponseN1, le format (la chaine) doit spécifier la façon (avec un %...) dont le deuxième paramètre doit être traité par printf(). A noter que printf() affiche quelque chose mais ne peut pas lire des valeurs. Pour lire une valeur, voir la fonction scanf() ou apparentées

    3- Que voulais-tu faire avec cette ligne long int (&reponseN1, 4, 33, 4, 1, 999);qui n'a pas de sens en C ?

    4- Tu dois faire faire 5 exercices de multiplication. Chaque exercice est similaire à un autre, seules les valeurs diffèrent. Il serait bénéfique de créer une fonction pour ça. Elle pourrait avoir le prototype int mult( int val1, int val2);et faire :
    - l'affichage de val1 et val2 : printf("... == ?\n", val1,val2);A toi de compléter les ...
    - la lecture de ce que l'utilisateur entre comme réponse : scanf("...", &reponse);.
    - la vérification du résultat et le renvoi de 1 si la réponse est juste et 0 si elle est fausse.
    La fonction main() devra alors :
    - mettre la note à 0.0
    - faire un appel à la fonction mult() avec les valeurs choisies. Si mult() renvoie 1 ajouter 2.0 à la note et sinon en retrancher 0.5
    - répéter l'opération précédente le nombre de fois voulu
    - afficher la note finale
    - quitter

  3. #3
    Membre régulier
    Homme Profil pro
    Informatique de gestion
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de gestion

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut
    Citation Envoyé par diogene Voir le message
    1- La variable total n'est pas locale, ce qui est contraire à l'énoncé.

    2- printf ("19 * 20 == ", reponseN1); Si printf() possède 2 arguments, la chaine et reponseN1, le format (la chaine) doit spécifier la façon (avec un %...) dont le deuxième paramètre doit être traité par printf(). A noter que printf() affiche quelque chose mais ne peut pas lire des valeurs. Pour lire une valeur, voir la fonction scanf() ou apparentées

    3- Que voulais-tu faire avec cette ligne long int (&reponseN1, 4, 33, 4, 1, 999);qui n'a pas de sens en C ?

    4- Tu dois faire faire 5 exercices de multiplication. Chaque exercice est similaire à un autre, seules les valeurs diffèrent. Il serait bénéfique de créer une fonction pour ça. Elle pourrait avoir le prototype int mult( int val1, int val2);et faire :
    - l'affichage de val1 et val2 : printf("... == ?\n", val1,val2);A toi de compléter les ...
    - la lecture de ce que l'utilisateur entre comme réponse : scanf("...", &reponse);.
    - la vérification du résultat et le renvoi de 1 si la réponse est juste et 0 si elle est fausse.
    La fonction main() devra alors :
    - mettre la note à 0.0
    - faire un appel à la fonction mult() avec les valeurs choisies. Si mult() renvoie 1 ajouter 2.0 à la note et sinon en retrancher 0.5
    - répéter l'opération précédente le nombre de fois voulu
    - afficher la note finale
    - quitter
    Merci pour ta réponse.

    1. J'ai corrigé pour le " total ", maintenant il est local et les variables aussi, j'ai un peut tester toutes les possibilités que j'avais en tête en attendant une réponse.

    2. Je ne savais pas que le " scanf () " s'utilisait dans ce cas là, je vais corrigé ça de suite, mais je n'ai pas compris ou je doit mettre le signe " % " ?

    3. Je voulais dire par " printf (&reponseN1, 4, ..... " le prof me demande toujours de mettre ça, c'est pour " ligne, colonne, largeur, ... " de ce qui sera afficher dans le programme.

    4. Je n'ai jamais utilisée le " mult () ". Et pour le reste je ne comprend pas trop, je doit faire un genre de " main () ", mais avant celui-ci et qui s’appellerait " int mult () " ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par inf-cb Voir le message
    2. Je ne savais pas que le " scanf () " s'utilisait dans ce cas là, je vais corrigé ça de suite, mais je n'ai pas compris ou je doit mettre le signe " % " ?
    La syntaxe de la fonction scanf() est très proche de la fonction printf() à ceci près quelle lis ce que l'utilisateur tape dans la console pour le rentrer dans les variables que tu lui rentres alors que printf() les affiche.
    Tu trouveras ton bonheur dans ce tutoriel.

    Citation Envoyé par inf-cb Voir le message
    3. Je voulais dire par " printf (&reponseN1, 4, ..... " le prof me demande toujours de mettre ça, c'est pour " ligne, colonne, largeur, ... " de ce qui sera afficher dans le programme.
    Même avec ce complément d'information, je suis un peu perdu...
    Toujours est-il que si tu lis bien et comprend le tutoriel précédent, tu ne devrais pas avoir de mal à afficher ce que tu souhaites.
    Un autre lien au cas où : http://emmanuel-delahaye.developpez....tique-c/#LIV-J

    Citation Envoyé par inf-cb Voir le message
    4. Je n'ai jamais utilisée le " mult () ". Et pour le reste je ne comprend pas trop, je doit faire un genre de " main () ", mais avant celui-ci et qui s’appellerait " int mult () " ?
    Connais-tu la notion de fonction ?
    mult() ou n'importe quel autre nom que tu pourras lui donner (de préférence un nom parlant par rapport à ce quelle fait. Ici mult pour multiplication ) est une fonction que tu devras créer TOI, et contenant le code des points énoncés par diogene.

  5. #5
    Membre régulier
    Homme Profil pro
    Informatique de gestion
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de gestion

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut
    Ok, merci beaucoup a vous deux, je test tout ça


    EDIT : Pouvez-vous m'expliquer comment ça fonctionne le " rand () ", car d'après l'énoncer de mon devoir, je dois l'utiliser.

    Voici l’énoncer de mon devoir :



    J'ai l'impression que toutes mes heures passaient à travailler sur ce devoir sont perdus...

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 874
    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 874
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par inf-cb Voir le message
    EDIT : Pouvez-vous m'expliquer comment ça fonctionne le " rand () ", car d'après l'énoncer de mon devoir, je dois l'utiliser.
    Salut
    Ben c'est expliqué. rand() renvoie un nombre aléatoire compris entre 0 et 32767. Donc si tu veux un nombre entre A et B inclus te suffit de diviser rand() par 32767.0 (pour avoir un résultat compris entre 0 et 1) et tu le multiplies par (B - A + 1) puis tu rajoutes A
    Exemple pour avoir un nombre aléatoire entre 12 et 22 tu divises rand() par 32767.0 puis tu multiplies par 11. Ca te donnera un nombre compris entre 0 et 10. Ensuite en rajoutant 12 ça te donnera un nombre compris entre 12 et 22.

    Ce qui n'est pas dit, en, revanche, c'est que rand() renvoie des nombres générés à partir d'un point de départ qui est toujours le même. Et donc si tu relances plusieurs fois le programme, les nombres générés seront les mêmes à chaque fois.
    Pour avoir des nombres vraiment aléatoires, il te faut initier le générateur avec srand() auquel tu passes un nombre dépendant de l'environnement et changeant avec celui-ci. Par exemple l'heure système ou bien ton n° de processus getpid() => srand(getpid())

    Donc pour reprendre l'idée de Diogène, faut que la fonction mult() génère 2 nombres aléatoires (en utilisant rand()) et calcule le résultat de la multiplication de ces 2 nombres.
    Ensuite elle vérifie si ce que rentre l'utilisateur est égal au résultat ou pas...

    Citation Envoyé par inf-cb Voir le message
    J'ai l'impression que toutes mes heures passaient à travailler sur ce devoir sont perdus...
    Les heures passées à travailler ne sont jamais perdues (enfin je pense car apparemment les heures passées à travailler les participes passés et les accords genre/nombre ont bel et bien été perdues elles)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre régulier
    Homme Profil pro
    Informatique de gestion
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de gestion

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut
    J'ai fais ça, mais je ne comprend toujours pas comment je doit faire le " mult () " ?

    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
        #include <stdio.h>
        #include <mylib.h>
     
     
        /*============================================================*/
                                    int main (void)
        /*============================================================*/
     
       {
        cls (NOIR);
        printf ("                           Exercice de multiplication\n");
        printf ("                           ==========================\n\n");
     
        long int A = (1, 20);
        long int B = (1, 20);
        long int total1;
        long int total2;
        long int total3;
        long int total4;
        long int total5;
     
        int i = 0;
        int nombre_aleatoire = 1;
     
        printf("Proposition Num.1 : ");
        srand(time(NULL));
        for(i=0; i<2; i++){
            nombre_aleatoire = rand()%20;
            printf("%d ",nombre_aleatoire);
     
        lire_long_int (&total1, 4, 35, 3, 1, 999);
        total1 = A * B;
        gotoxy(6, 1);
     
        }
     
        printf("\n\n");
        printf("Proposition Num.2 : ");
        srand(time(NULL));
        for(i=0; i<2; i++){
            nombre_aleatoire = rand()%20;
            printf("%d ",nombre_aleatoire);
     
        lire_long_int (&total2, 4, 35, 3, 1, 999);
        total2 = A * B;
        gotoxy(8, 1);
     
        }
     
        printf("\n\n");
        printf("Proposition Num.3 : ");
        srand(time(NULL));
        for(i=0; i<2; i++){
            nombre_aleatoire = rand()%20;
            printf("%d ",nombre_aleatoire);
     
        lire_long_int (&total3, 4, 35, 3, 1, 999);
        total3 = A * B;
        gotoxy(10, 1);
     
        }
     
        printf("\n\n");
        printf("Proposition Num.4 : ");
        srand(time(NULL));
        for(i=0; i<2; i++){
            nombre_aleatoire = rand()%20;
            printf("%d ",nombre_aleatoire);
     
        lire_long_int (&total4, 4, 35, 3, 1, 999);
        total4 = A * B;
        gotoxy(12, 1);
     
        }
     
        printf("\n\n");
        printf("Proposition Num.5 : ");
        srand(time(NULL));
        for(i=0; i<2; i++){
            nombre_aleatoire = rand()%20;
            printf("%d ",nombre_aleatoire);
     
        lire_long_int (&total5, 4, 35, 3, 1, 999);
        total5 = A * B;
        gotoxy(14, 1);
     
        }
     
        printf("\n\n\n");
        system ("pause");
        return 0;
     
     
       }    /* end main     */


    C'est déjà mieux que la première fois non ?

  8. #8
    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
    - srand() doit être utilisé une seule fois, en général au début du programme.

    - Tu ne trouves pas qu'il y a des répétitions du code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        for(i=0; i<2; i++){
            nombre_aleatoire = rand()%20;
            printf("%d ",nombre_aleatoire); 
        lire_long_int (&total1, 4, 35, 3, 1, 999);
        total1 = A * B;
    //...
        for(i=0; i<2; i++){
            nombre_aleatoire = rand()%20;
            printf("%d ",nombre_aleatoire);
        lire_long_int (&total2, 4, 35, 3, 1, 999);
        total2 = A * B;
    //... etc.
    C'est là que tu peux regrouper ces codes en faisant une fonction (ce que j'avais appelé mult()) puisque tu fais des choses extrèmement semblables
    En reprenant ton code, et par exemple pour te faire comprendre l'idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int mult(void)
    {
      int A, B;
      long int total;
      A = rand()%20;   // donne des valeurs entre 0 et 19
      B = rand()%20;
      printf(" %d x %d = ?\n",A,B);
      lire_long_int (&total, 4, 35, 3, 1, 999); // en te faisant confiance sur les arguments
      return total == A*B; // renvoie 1 si l'entrée est juste et 0 sinon
    }
    main() prend l'allure
    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
    int main(void)
    {
       // déclarations des variables   
       int i;
    ...
       srand((time(NULL)); //initialisation du générateur aléatoire
       ...
       for(i=0;i<5;i++)  // faire 5 fois les multiplications
       {   
         if(mult())
         {  
            ... // ce qu'il faut faire si le résultat est juste
         }
         else
         {  
            ... // ce qu'il faut faire si le résultat est faux
         }
         ...// ce qu'il faut faire dans les deux cas
       }
    ...
       return 0;
    }

  9. #9
    Membre régulier
    Homme Profil pro
    Informatique de gestion
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de gestion

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut
    Merci pour vos réponses.

    Pour la répétition, c'est fait exprêt pour que j'ai 5 calcules donc j'ai répété 5. Je vais corriger les erreurs et je vous en ferais part.

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 874
    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 874
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par inf-cb Voir le message
    Pour la répétition, c'est fait exprêt pour que j'ai 5 calcules donc j'ai répété 5.
    Ben non, justement, c'est là l'avantage des fonctions et des boucles
    Tu fais une fonction un peu générique (lire attentivement les explications de Diogène à ce sujet) que tu appelles 5 fois (dans une boucle par exemple...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre régulier
    Homme Profil pro
    Informatique de gestion
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de gestion

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    srand((time(NULL)); //initialisation du générateur aléatoire

    J'ai déjà essayer de remplacer " NULL " par un nombre, mais il dit juste " ERREUR " et il ne se passe rien.

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 874
    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 874
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par inf-cb Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    srand((time(NULL)); //initialisation du générateur aléatoire

    J'ai déjà essayer de remplacer " NULL " par un nombre, mais il dit juste " ERREUR " et il ne se passe rien.
    Qui dit "erreur" ? Le compilateur ? Le programme ??? Surtout n'en dis pas trop, ça serait trop facile !!!
    Accessoirement t'as une erreur de parenthèses...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre régulier
    Homme Profil pro
    Informatique de gestion
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de gestion

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut
    error: expected ')' before ';' token

    Il dit ça, est ça veut dire quoi ça ?


    EDIT : Oui, tu as raison, je suis bète, j'ai mit une parenthèse en trop...
    ___________________________________________________________________

    @diogene : Tu voulais dire que je dois faire ainsi ?

    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
        #include <stdio.h>
        #include <mylib.h>
     
     
        /*============================================================*/
                                    int main (void)
        /*============================================================*/
     
       {
        cls (NOIR);
        printf ("                           Exercice de multiplication\n");
        printf ("                           ==========================\n\n");
     
     
        long int A = 1;
        long int B = 1;
     
     
        int i;
        srand(time(NULL));
        for(i=0;i<5;i++)
        {
        if(mult(5))
        {
        printf("Félicitation, la réponse est correcte : vous gagnez 2 points.");
        }
        else
        {
        printf("Erreur, la réponse est incorrecte : vous perdez 0,5 point.");
        }
        printf("Le total de vos points est égal à : ");
        }
     
        system("pause")
        return 0;
     
        }   /*end main      */


    Mais j'ai une erreur bizarre, que je n'avais jamais eu :

    error: expected ';' before 'return'

  14. #14
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 874
    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 874
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par inf-cb Voir le message
    @diogene : Tu voulais dire que je dois faire ainsi ?

    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
        #include <stdio.h>
        #include <mylib.h>
     
     
        /*============================================================*/
                                    int main (void)
        /*============================================================*/
     
       {
        cls (NOIR);
        printf ("                           Exercice de multiplication\n");
        printf ("                           ==========================\n\n");
     
     
        long int A = 1;
        long int B = 1;
     
     
        int i;
        srand(time(NULL));
        for(i=0;i<5;i++)
        {
        if(mult(5))
        {
        printf("Félicitation, la réponse est correcte : vous gagnez 2 points.");
        }
        else
        {
        printf("Erreur, la réponse est incorrecte : vous perdez 0,5 point.");
        }
        printf("Le total de vos points est égal à : ");
        }
     
        system("pause")
        return 0;
     
        }   /*end main      */
    Pas vraiment. Tu appelles mult(5) comme si cette fonction devait faire 5 "quelque choses" (je présume "poser 5 questions et traiter 5 réponses"). Mais tu t'en sers comme si elle renvoyait une valeur (style "il a bien ou mal répondu à une question")
    Tu peux pas mélanger. Soit mult() traites une action (style poser une multiplication, demander à l'élève le résultat, évaluer ce résultat et renvoyer 0 ou 1 si l'élève a bien ou mal répondu => tout ça ça se nomme "action")
    Ensuite tu peux appeler mult une fois, deux fois, 100 fois sans souci

    Soit mult() est assez complexe pour traiter n opérations et évaluer les n réponses puis renvoyer le décompte total des points. Et tu l'appelles qu'une fois.

    Les deux façons de faire sont possibles mais la notion d'atomicité me pousserait à opter pour la première façon de faire. Plus les fonctions sont simples, mieux on peut les combiner entre elles...


    Citation Envoyé par inf-cb Voir le message
    Mais j'ai une erreur bizarre, que je n'avais jamais eu :
    error: expected ';' before 'return'
    Tu lis pas l'anglais ? Le compilo attend un point-virgule avant l'instruction "return". Or comme avant il n'y a rien on remonte alors sur la ligne précédente et là on voit ce qui manque...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Membre régulier
    Homme Profil pro
    Informatique de gestion
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de gestion

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut
    J'ai encore du mal à comprendre comment appliquer le " mult() ", je comprend ce que vous voulez me dire, mais je n'arrive pas à l’appliquer.


    Non, malheureusement, je ne sais pas l'anglais, j'ai commencer seulement cette année à apprendre à programmer, l'anglais etc...


    Pour le " ; ", franchement d'abord c'est la parenthèse et maintenant c'est ça, excusez-moi, c'est fautes que je ne fait quasi jamais habituellement, mais a mon avis la fatigue prend le dessus. Ça fait plusieurs jours de plusieurs heures que je suis devant le PC à essayer de résoudre les problème et écrire mon programme, mais je n'y arrive pas, mais je reste optimiste


    Désolé, si je vous dérange ou vous soul avec des questions évidentes pour vous, mais je n'ai que quelques notions d'informatique et j'ai du mal pour le moment.

  16. #16
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    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 202
    Par défaut
    Non, tu ne nous déranges pas.
    Visiblement, tu fais les efforts d'apprendre et de comprendre.
    C'est très bien, et nous sommes tous passé par là.

    Essaie de formuler des questions précises, elles trouveront peut-être des réponses juste en les posant.

    Le but du jeu de la programmation, c'est d'être assez fainéant.
    Tu ne veux pas écrire mille fois quelque chose, donc tu utilise une fonction pour le remplacer.
    Tu ne veux pas non plus l'écrire trois fois…

    Rien ne sert de faire complexe, mais rappelle-toi que tes doigts sont fragiles.

    Le corps de la fonction mult(…) est les lignes que tu recopies, et les paramètres de mult sont les détails qui changent dans ces copies.
    La seule limite que je te conseille, c'est de ne pas avoir de paramètre qui soit directement déduit d'un autre. Par exemple, si tu avais une fonction facture() à faire, tu ne mets pas en paramètre le prix hors taxe, la tva et le prix toutes taxes comprises, l'un des trois est en trop.

  17. #17
    Membre régulier
    Homme Profil pro
    Informatique de gestion
    Inscrit en
    Décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de gestion

    Informations forums :
    Inscription : Décembre 2012
    Messages : 9
    Par défaut
    Bonjour à tous,

    j'ai dû envoyer mon devoir à mon prof., j'espère que tout va aller pour le mieux. Je tâcherais de retenir vos conseilles pour la prochaine fois, merci beaucoup pour votre énorme aide.


    Cependant, je n'ai pas eu assez de temps pour terminer mon devoir, mais si je tarderais à le rendre mon prof. m'enlèverais des points, alors j'ai fais le maximum et je lui est envoyer.


    J'espère que je pourrais revenir au cas ou si j'ai d'autres soucis ?


    PS : Ce sujet sera marquer en tant que [Résolu].

  18. #18
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    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 202
    Par défaut
    Bien sûr que tu pourras revenir.
    Ce sera un plaisir.

    N'hésite pas à terminer ce devoir pour toi-même.
    Tu y apprendras plus encore.

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

Discussions similaires

  1. cherche personne pour creer un programme sur excel
    Par lorie3000 dans le forum Excel
    Réponses: 0
    Dernier message: 12/03/2013, 10h10
  2. problème pour écrire un programme en ocaml
    Par aubois55 dans le forum Caml
    Réponses: 4
    Dernier message: 19/10/2011, 22h04
  3. Aide pour écrire un programme
    Par DELTA67 dans le forum Débuter
    Réponses: 7
    Dernier message: 02/08/2010, 23h30
  4. Difficultés pour changer le curseur sur click gauche
    Par Cerambyx_Cerdo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/05/2008, 11h31
  5. Quelqu'un pour écrire un article sur PowerAMC 12 ?
    Par Marc Lussac dans le forum Contribuez
    Réponses: 1
    Dernier message: 20/04/2006, 17h34

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