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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 840
    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 840
    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]

+ 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, 09h10
  2. problème pour écrire un programme en ocaml
    Par aubois55 dans le forum Caml
    Réponses: 4
    Dernier message: 19/10/2011, 21h04
  3. Aide pour écrire un programme
    Par DELTA67 dans le forum Débuter
    Réponses: 7
    Dernier message: 02/08/2010, 22h30
  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, 10h31
  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, 16h34

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