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

Mon programme Discussion :

Distributeur de boissons en C


Sujet :

Mon programme

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut Distributeur de boissons en C
    Bonjours à tous.
    Voila, je suis un etudiant en premiere année d'informatique ^^ . Je viens donc de faire mon initiation à l'algorithmique et au C :p
    Je trouve que c'est très interessant mais assez complexe :o .
    J'ai un travail a rendre pour cette semaine mais je ne sais vrement pas par ou commencer .
    Si quelqu'un peut m'aider ou me donner des conseil ça serait très sinpa .
    merci d'avance!

    Devoir de travaux pratiques à rendre le 3 décembre 2010 avant 16 heures
    Les étudiants doivent rendre :
    • Un dossier d'analyse et programmation, sur papier, dont le plan est fourni à la fin de ce sujet. Celui-ci peut être écrit avec un traitement de texte ou à la main, mais dans tous les cas il doit être soigné, et sa forme (présentation, orthographe) sera prise en compte dans la notation. (Noter l'adresse électronique à côté du nom des étudiants).
    • Le listing papier des trois programmes source en langage C qui constituent ce TP. • une archive (.zip, rien d'autre) contenant les trois programmes source en C.
    Chaque étudiant présentera son travail oralement à une date qui lui sera précisée
    1. Présentation du sujet
    Ce sujet est composé de trois parties. Les deux premières sont indépendantes : • simulation d'un petit distributeur de boissons, • simulation d'un automate monnayeur qui encaisse un paiement et rend la monnaie.
    La troisième partie est un enchaînement des deux précédentes : elle simule un distributeur de boissons, qui encaisse le prix de la boisson et rend la monnaie.
    Pour les deux premières parties les étudiants devront :
    • rédiger une analyse du problème et de la solution apportée,
    • écrire l'algorithme du programme principal et des fonctions,
    • programmer l'algorithme en langage C,
    • prévoir un jeu de tests destinés à vérifier que le programme est juste dans toutes les classes de cas,
    • exécuter le programme en appliquant tous les tests prévus,
    • rédiger un compte-rendu sur l'application des tests.' Pour la troisième partie les étudiants devront :
    • expliquer les modifications apportées à chacune des deux parties et la manière dont est réalisé l'enchaînement,
    • tester le programme C résultant de l'enchaînement des deux précédents, • donner un ou deux exemples d'exécution du programme complet
    2. Conseils
    Un effort particulier devra être fait sur la structuration des algorithmes par un usage approprié de fonctions chaque fois que cela est possible, ou, à défaut, par une mise en page claire et lisible des différentes parties qui constituent les algorithmes et les programmes.
    Les programmes doivent être correctement présentés (lisibilité, indentation) et contenir de nombreux commentaires sur les rôles des variables, les spécifications des fonctions, les instructions importantes et tout ce qui permet au lecteur de comprendre le code.
    Les exemples d'exécutions qui sont données dans ce sujet ne sont pas destinés à être reproduits au caractère près, mais sont donnés pour montrer ce qui est attendu. Les étudiants restent libres de l'ergonomie de leurs programmes.
    Année 2010-2011 1/4 Annie TartierUniversité Internationale de Rabat Algorithmique et Programmation 1 - TP à rendre
    3. Première partie : distributeur de boissons
    On veut simuler un petit distributeur de boissons. On y propose du thé, du café ou du chocolat. On peut choisir une boisson sans sucre, sucrée ou très sucrée. Enfin on peut opter pour un supplément de lait.
    Pour commander du café, l'utilisateur devra entrer le code "CAF", pour commander du chocolat il entrera le code "CHO" et pour commander du thé, le code "THE".
    Pour simplifier le travail de programmation, tous les calculs seront faits en entiers. On parle donc en centimes d'euros, même si certains affichages mentionnent des euros.
    Le café et le thé coûtent 40 centimes, le chocolat 60 centimes. Une portion de sucre coûte 5 centimes (le choix boisson sucrée correspond à une portion de sucre et le choix boisson très sucrée correspond à deux). Le supplément de lait coûte 15 centimes.
    Le programme qui simule le distributeur pose à l'utilisateur les trois questions qui permettent de déterminer exactement de quoi est faite la boisson souhaitée. Une fois les données récoltées, le programme apporte deux réponses :


    une phrase construite sur l'un des modèles suivants, toutes les combinaisons étant possibles :
    • • •
    "Votre café très sucré sans lait est prêt", "Votre chocolat sucré avec lait est prêt ", "Votre thé non sucré sans lait est prêt".
    une phrase annonçant le prix à payer :
    • • •
    "Vous devez payer 50 centimes", "Vous devez payer 80 centimes", "Vous devez payer 40 centimes",
    correspondant aux trois exemples précédents. On donne un exemple de dialogue entre le distributeur et l'usager.
    Contrôle de réponse :
    • Si l'utilisateur tape un code différent de CAF, de CHO ou de THE, la machine affiche simplement le message "IMPOSSIBLE" et le programme s'arrête.
    • Le nombre de portions de sucre et de lait doit être redemandé tant qu'il n'est pas correct. Travail à réaliser
    1) Écrire l'algorithme qui simule le fonctionnement de ce distributeur pour le service d'un client. 2) Écrire le programme C qui simule ce distributeur. 3) Établir un jeu de tests qui permettent de vérifier que le programme fonctionne correctement.
    Quelle boisson : CAF Combien de doses de sucre (0, 1 ou 2) : Un entier compris entre 0 et 2 : 0 Supplément de lait (0/1) : Un entier compris entre 0 et 1 : 1 ------------------------------------------------------ Votre café non sucré avec lait est prêt Vous devez payer 55 centimes ------------------------------------------------------
    Année 2010-2011 2/4 Annie Tartier
    Université Internationale de Rabat Algorithmique et Programmation 1 - TP à rendre
    4. Deuxième partie : automate monnayeur
    On veut simuler un automate qui accomplit les actions suivantes :
    • Il demande à l'utilisateur quel est le montant à payer, sous la forme d'un entier compris entre 1 et 1000 centimes.
    • Il arrondit cette somme à 5 unités par défaut (par exemple : 340 sera arrondi à 340, 344 sera arrondi à 340, 345 sera arrondi à 345 et 349 sera arrondi à 345).
    • Il encaisse le montant sous la forme d'une suite de pièces. Seules six pièces sont autorisées. Ce sont : 1 ou 2 euros et 5, 10, 20 ou 50 centimes. L'encaissement s'arrête automatiquement dès que la somme donnée atteint ou dépasse le montant à payer.
    • Il calcule la somme à rendre. • Il annonce les pièces qu'il délivre pour rendre la monnaie en suivant la stratégie suivante : il
    examine les pièces de la plus grosse à la plus petite, et calcule chaque fois le plus grand nombre possible qu'il peut délivrer sans dépasser la somme à rendre. On considère que l'automate dispose toujours de toutes les pièces qui lui sont nécessaires.
    On donne deux exemples de dialogues entre l'automate et l'usager.
    Contrôle de réponse :
    • La somme à encaisser doit être redemandée tant qu'elle n'est pas comprise entre 1 et 1000. • Chaque pièce doit être redemandée tant qu'elle ne fait pas partie des pièces acceptées.
    Travail à réaliser
    1) Écrire l'algorithme qui simule le fonctionnement de cet automate pour le paiement d'un client. 2) Écrire le programme C qui simule cet automate. 3) Établir un jeu de tests qui permettent de vérifier que le programme fonctionne correctement.
    ----------------- Début de la transaction ----------------- Somme à encaisser (en centimes) Un entier compris entre 1 et 1000 : 38 Reste à payer : 35
    Piece (euros : 2, 1 ; centimes : 50, 20, 10, 5) : 2 Somme à rendre : 1 euro(s) et 65 centimes ---------------------- Retour monnaie ---------------------- 1 pièce(s) de 1 euro
    1 pièce(s) de 50 centime(s) 1 pièce(s) de 10 centime(s) 1 pièce(s) de 5 centime(s) ------------------- Transaction terminée -------------------
    ----------------- Début de la transaction ----------------- Somme à encaisser (en centimes) Un entier compris entre 1 et 1000 : 155 Reste à payer : 155
    Piece (euros : 2, 1 ; centimes : 50, 20, 10, 5) : 1 Reste à payer : 55 Piece (euros : 2, 1 ; centimes : 50, 20, 10, 5) : 50 Reste à payer : 5
    Piece (euros : 2, 1 ; centimes : 50, 20, 10, 5) : 50 Somme à rendre : 0 euro(s) et 45 centimes ---------------------- Retour monnaie ---------------------- 2 pièce(s) de 20 centime(s)
    1 pièce(s) de 5 centime(s) ------------------- Transaction terminée -------------------
    Année 2010-2011 3/4 Annie Tartier
    Université Internationale de Rabat Algorithmique et Programmation 1 - TP à rendre
    5. Troisième partie
    Reprendre les deux programmes précédents et construire un troisième programme qui simule un distributeur de boissons qui encaisse le prix de la boisson et rend la monnaie. En résumé :




    Il demande à l'utilisateur :
    • • •
    quelle boisson il veut (CAF, CHO ou THE), combien il veut de doses de sucre (0, 1 ou 2), s'il veut un supplément de lait,
    Il affiche : • la boisson délivrée selon les phrases décrites en première partie, • le prix en centimes,
    Il demande à l'utilisateur : • la suite des pièces que celui-ci donne en paiement, en s'arrêtant dès que la somme est
    atteinte ou dépassée, Il affiche :
    • les pièces de monnaie qu'il rend à l'utilisateur. Pour réaliser cette fusion des deux programmes, il faudra faire quelques aménagements : parties
    à enlever, à déplacer etc.
    Travail à réaliser
    1) Réaliser tous les aménagements nécessaires pour fusionner les deux programmes. 2) Donner un ou deux exemples d'exécution du programme complet.
    6. Plan du dossier
    1. Introduction 2. Distributeur de boisson
    1. Analyse du problème, présentation de l'organisation choisie 2. Algorithmes : principal et fonctions 3. Présentation des jeux d'essais 4. Remarques critiques sur ce qui a été réalisé
    3. Automate monnayeur 1. Analyse du problème, présentation de l'organisation choisie 2. Algorithmes : principal et fonctions 3. Présentation des jeux d'essais 4. Remarques critiques sur ce qui a été réalisé
    4. Distributeur et automate 1. Description précise des modifications apportées pour réaliser la fusion 2. Description d'un ou deux exemples 3. Remarques critiques sur ce qui a été réalisé
    5. Conclusion générale sur le travail réalisé.

  2. #2
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    je suis étudiant à l'université international de rabat, c'est un nouvel etablissement qui vient d'ouvrir ses portes et je fais parti de la premiere promotion.

    Il est vrai que j'ai très mal exposé le sujet et je m'en excuse, j'ai fais ça un peu dans la hâte...
    En fait le travail a realiser consiste à programmer une machine qui distribue du café du thé et du chocolat.
    On a le choix entre une boisson sans sucre, sucrée ou trés sucrée(double dose de sucre).
    On peut aussi choisir avec ou sans supplement lait.
    le café et le thé sont à 40 centimes, le chocolat à 60.
    La dose de sucre coute 5 centimes.
    Le supplement lait est a 15 centimes.
    Ca, c'est la premiere partie.
    Voila en gros c'est à peu près ça.
    Le travail est à faire en deux partie;

    Une partie pour le choix de la boisson et son prix.
    Une autre pour l'automate monayeur qui s'occupe de calculer la maonnaie a rendre en fonction de l'argent introduit par le client.

    Pour l'instant j'en suis a la partie,
    voila le travail que j'ai realisé, ce n'est pas grand chose mais je viens tout juste de commencer et je suis confronté à des erreurs de build que je ne comprends pas tres bien.
    merci d'avance pour vos conseils et appreciations



    //tp
    #include<stdio.h>
    #include<string.h>



    main(){

    char boisson[4];
    int prix;
    int nbdose;
    int lait;

    printf("Voulez-vous du café du thé ou du chocolat?\n tapez\n CAF pour café\n THE pour thé\n CHO pour chocolat\n ");
    scanf("%s", boisson);
    if(boisson = 'caf'|| boisson = 'the' || boisson = 'cho')
    {
    prix=40
    }
    printf("Voulez vous une boisson sans sucre, sucrée ou très sucrée?\n tapez\n 0 pour sans sucre\n 1 pour sucrée\n 2 pour très sucrée\n ");
    scanf("%d", &nbdose);
    if(nbdose=0)
    {prix=prix}
    else{if(nbdose=1)
    {prix=prix+5}
    else{if(nbdose=2)
    {prix=prix+10}}}
    printf("voulez-vous une boisson avec ou sans lait?\n tapez\n 0 pour sans lait\n 1 pour avec lait\n");
    scanf("%d", &lait);
    if (lait=0)
    {prix= prix
    }
    else{if(lait=1)
    {prix=prix+15}}

    if(boisson='cho')
    {
    prix=prix+20
    }
    }

  3. #3
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut, et bienvenue ici

    Citation Envoyé par fifa990 Voir le message
    Il est vrai que j'ai très mal exposé le sujet et je m'en excuse, j'ai fais ça un peu dans la hâte...
    je n'ai d'ailleurs pas pris la peine de lire ton premier post...


    Citation Envoyé par fifa990 Voir le message
    Pour l'instant j'en suis a la partie,
    voila le travail que j'ai realisé, ce n'est pas grand chose mais je viens tout juste de commencer et je suis confronté à des erreurs de build que je ne comprends pas tres bien.
    Dans ce cas, il pourrait être intéressant de nous donner les erreurs que tu obtiens plutôt que de mettre du code tout seul... d'ailleurs, utilise les balises [ CODE ], ça sera beaucoup plus lisible (le bouton # dans la fenêtre des messages)

    Sinon, pour les conseils...
    une chaine de caractères, c'est entre "
    un test d'égalité, c'est avec ==
    et ça serait bien de mettre des ; en fin de ligne...

    mais ça le compilateur a dû te le dire...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    merci pour tes conseils plegat

    voila le programme que j'ai realisé
    il y a des erreurs et je ne suis sur de rien
    quelqu'un peut il le tester pour m'aider a resoudre les erreurs

    |44|error: incompatible types when assigning to type 'char[9]' from type 'char *'|
    ( cette erreur s'affiche trois fois, ligne 44 48 et 52)


    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
    //tp
    #include<stdio.h>
    #include<string.h>
    
    
    
    main(){
    
    char boisson[4];
    char boisson2[9];
    int prix;
    int nbdose;
    int lait;
    
    printf("Voulez-vous du café du thé ou du chocolat?\n tapez\n CAF pour café\n THE pour thé\n CHO pour chocolat\n ");
    scanf("%s", boisson);
    if(boisson == "caf"|| boisson == "the" || boisson == "cho")
    {
     prix=40;
    }
    printf("Voulez vous une boisson sans sucre, sucrée ou très sucrée?\n tapez\n 0 pour sans sucre\n 1 pour sucrée\n 2 pour très sucrée\n ");
    scanf("%d", &nbdose);
    if(nbdose==0)
    {prix=prix;}
    else{if(nbdose==1)
    {prix=prix+5;}
    else{if(nbdose==2)
    {prix=prix+10;}}}
    printf("voulez-vous une boisson avec ou sans lait?\n tapez\n 0 pour sans lait\n 1 pour avec lait\n");
    scanf("%d", &lait);
    if (lait==0)
    {prix= prix;
    }
    else{if(lait==1)
    {prix=prix+15;}}
    
    if(boisson=="cho")
    {
       prix=prix+20;
    }
    
    if(boisson== "caf")
    {
        boisson2= "café";
    }
    if(boisson== "the")
    {
        boisson2= "thé";
    }
    if(boisson== "cho")
    {
        boisson2="chocolat";
    }
    if(nbdose==0 && lait== 0)
    {
        printf("Votre %s sans sucre et sans lait est prête, payez %d\n", boisson2, prix);
    }
    if(nbdose==0 && lait== 1)
    {
        printf("Votre %s sans sucre et avec lait est prête, payez %d\n", boisson2, prix);
    }
    if(nbdose==1 && lait== 0)
    {
        printf("Votre %s sucrée sans lait est prête, payez %d\n", boisson2, prix);
    }
    if(nbdose==1 && lait==1)
    {
        printf("Votre %s sucrée avec lait est prête, payez %d\n", boisson2, prix);
    }
    if(nbdose==2 && lait==0)
    {
        printf("Votre %s très sucrée sans lait est prête, payez %d\n", boisson2, prix);
    }
    if(nbdose==2 && lait==1)
    {
        printf("Votre %s très sucrée avec lait est prête, payez %d\n", boisson2, prix);
    }
    
    
    
    
    
    
    }

  5. #5
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    Je pense que ton sujet est dans la mauvaise section.

    Pour ton problème :
    A la place de metEn effet puisque boisson2 recoit une chaine de caractère de taille variable, il n'y a pas de raison de fixer sa taille à 9.

  6. #6
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut
    Notons aussi :

    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
    if(boisson=="cho")
    {
       prix=prix+20;
    }
    
    if(boisson== "caf")
    {
        boisson2= "café";
    }
    if(boisson== "the")
    {
        boisson2= "thé";
    }
    if(boisson== "cho")
    {
        boisson2="chocolat";
    }
    que je remplacerais par un switch ...case

Discussions similaires

  1. Alimentations/boissons : racket de l'état?
    Par Matthieu2000 dans le forum Politique
    Réponses: 25
    Dernier message: 08/10/2008, 16h29
  2. Projet Distributeur orienté objet
    Par antoine2405 dans le forum Débuter
    Réponses: 15
    Dernier message: 28/04/2008, 11h42
  3. Réponses: 2
    Dernier message: 27/03/2008, 07h26
  4. [MCD] Relations Fabricants-Distributeurs-Produits
    Par bib.13 dans le forum Schéma
    Réponses: 9
    Dernier message: 05/03/2008, 18h30
  5. gestion d'une centrale de distribution de boissons
    Par codezovi dans le forum Modélisation
    Réponses: 2
    Dernier message: 05/05/2007, 13h32

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