Exemple 1 : analyse simple sans module. Le problème de la monnaie

Documents pareils
Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Programmation C++ (débutant)/instructions for, while et do...while


Claude Delannoy. 3 e édition C++

Introduction à l héritage en C++

INFO-F-105 Language de programmation I Séance VI

Cours d Algorithmique et de Langage C v 3.0

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Programmation stochastique

1.6- Génération de nombres aléatoires

Examen Médian - 1 heure 30

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Introduction au pricing d option en finance

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Introduction à l algorithmique et à la programmation M1102 CM n 3

Bon d études canadien AGISSEZ MAINTENANT ET OBTENEZ 500 $ POUR VOTRE ENFANT LC

I. Introduction aux fonctions : les fonctions standards

IUT ANNECY Département Mesures Physiques Cours d informatique Initiation au langage C

Programme Compte bancaire (code)

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

Création du projet : 1 sur 13

Introduction au langage C

Le langage C. Séance n 4

EXERCICE N 9. Base Centrale de pilotage. Notions abordées : Création d objets personnels. Utilisation de fonctions numériques

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

CHAPITRE V. Recherche et tri

et Programmation Objet

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique et Programmation, IMA

PROJET ALGORITHMIQUE ET PROGRAMMATION II

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Cours de C/C++ par la pratique. Hugues Talbot

Une introduction à Java

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

STAGE IREM 0- Premiers pas en Python

Programmation en C/C++

Introduction à C++ et à wxwidgets

Enquête de CPA Canada sur la fraude 2014

V- Manipulations de nombres en binaire

IRL : Simulation distribuée pour les systèmes embarqués

Programmation C. Apprendre à développer des programmes simples dans le langage C

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

Le langage C++ (partie I)

ALGORITHMIQUE ET PROGRAMMATION En C

Programmation système I Les entrées/sorties

Amortissement annuité , , ) Indiquer ce que sera la deuxième ligne du tableau en justifiant chacun des résultats.

L État du commerce électronique dans l industrie du sport au Canada

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Par combien de zéros se termine N!?

TP : Gestion d une image au format PGM

Programmation Classique en langage C

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Chapitre 1 : Évolution COURS

a) b)

NPIH800 GENERATION & RESEAUX. PROTECTION de COURANT TERRE

.. Guy de Girard de Charbonnieres.

Chap III : Les tableaux

Rappels Entrées -Sorties

I / Un marché planétaire de la devise

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Le compte bancaire qui vous convient Ce que vous devez savoir

Suites numériques. Exercice 1 Pour chacune des suites suivantes, calculer u 1, u 2, u 3, u 10 et u 100 : Introduction : Intérêts simpleset composés.

Représentation d un entier en base b

Notions fondamentales du langage C# Version 1.0

UE C avancé cours 1: introduction et révisions

POKER ET PROBABILITÉ

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

TD/TP PAC - Programmation n 3

Rapports d activités et financiers par Internet. Manuel Utilisateur

LETTRE D ENVOI POUR LES PORTEURS D ACTIONS DE HOMBURG INVEST INC.

Quelques algorithmes simples dont l analyse n est pas si simple

2. Comprendre les définitions de classes

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

EXERCICE 4 (7 points ) (Commun à tous les candidats)

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Algorithmique et programmation : les bases (VBA) Corrigé

Chapitre 4. Gestion de l environnement. Pré-requis. énoncé

GUIDES FINANCIERS PRATIQUES ABC DES CARTES DE CRÉDIT. Ce que vous devez savoir sur l utilisation de votre carte de crédit

Conception des systèmes répartis

Chapitre 10 Arithmétique réelle

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Chapitre 2 Devine mon nombre!

Logistique, Transports

KX-DT321 Guide d utilisation rapide

Dérivation : Résumé de cours et méthodes

Manuel Cartes ristournes

Bien gérer votre argent

Transcription:

UNIVERSITÉ DE SHERBROOKE DÉPARTEMENT D INFORMATIQUE IFT 159 - Analyse et programmation Exemple 1 : analyse simple sans module Le problème de la monnaie Table des matières 1 Énoncé du problème 1 2 Analyse 2 2.1 But et description du système............................. 2 2.2 Spécification..................................... 2 3 Conception/Algorithme 4 3.1 Premier niveau.................................... 4 3.2 Second niveau..................................... 4 4 Implantation 6 1 Énoncé du problème Une personne économise depuis plusieurs années pour se payer un voyage en France. Elle conserve ses économies sous forme de billets de 20, 10 et 5 dollars ainsi que sous forme de pièces de 2, 1 et 0,25 dollars. Vient le temps de passer à la banque pour changer ses dollars en francs suivant le taux de change courant. Il y a des frais de courtage de n% sur la somme totale à changer, en plus d une commission fixe de N$. Elle désire avoir des billets de 500F comme plus grosses coupures. Les autres coupures sont celles de 100 et 50F. Les pièces de monnaie sont de 20, 10, 5, 2 et 1F ainsi que 50, 10, 20 et 5 centimes. Elle désire aussi avoir le minimum de coupures et le minimum de pièces. Combien la personne aura-t-elle de billets et de pièces de chaque valeur? 1

2 Analyse 2.1 But et description du système 2.2 Spécification Entrées : No. Médium (écran ou clavier) Description Type (entier, réel,...) 1 clavier Le nombre de billets de 20$, de 10$ et de 5$ 3 entiers 2 clavier Le nombre de pièces de 2$, de 1$ et de 25 cents 3 entiers 3 clavier Le taux de change courant réel 4 clavier Le taux de courtage, qui est un pourcentage réel 5 clavier Le montant de la commission réel Sorties : No. Médium (écran ou clavier) Description Type (entier, réel,...) 1 écran Le nombre de billets de 500F, de 100F et de 50F 3 entiers 2 écran Le nombre de pièces de 20F, de 10F, de 5F, de 2F 5 entiers et de 1F. 3 écranr Le nombre de pièces de 50, 20, 10 et 5 centimes 4 entiers 2

Constantes : Type Nom Valeur Description Entier Vingt dollars 20 Entier Dix dollars 10 Entier Cinq dollars 5 Entier Deux dollars 2 Entier Un dollars 1 Entier Vingt cinq sous 25 Type Nom Valeur Description Entier Franc 500 500 Entier Franc 100 100 Entier Franc 50 50 Entier Franc 20 20 Entier Franc 10 10 Entier Franc 5 5 Entier Franc 2 5 Entier Franc 1 5 Entier Centime 50 50 Entier Centime 20 20 Entier Centime 10 10 Entier Centime 5 5 Formules (Relation E/S) : Étape no. Description Formules no. (si requis) 1 Montant détenu = nombre de pièces valeur de la pièce 2 Frais = Commission + Montant Taux de courtage 3 Montant à changer = Montant - Frais 4 Montant total en Francs = Montant à changer Taux de change 5 Nombre de billets d une valeur = Montant total(restant) div valeur du billet 6 Montant restant = Montant total/restant modulo (Nombre de billets valeur du billet) 3

3 Conception/Algorithme 3.1 Premier niveau 1. Lire le nombre des différents billets et pièces en monnaie canadienne. 2. Calculer le montant détenu (formule 1). 3. Lire le taux de courtage et le montant de la commission. 4. Calculer les frais inhérants à la transaction (formule 2). 5. Calculer le montant à changer (formule 3). 6. Lire le taux de change. 7. Calculer le montant à recevoir en Francs (formule 4). 8. Calculer le nombre de billets et pièces en monnaie française. 9. Afficher le nombre de billets et pièces en monnaie française. 3.2 Second niveau Raffinement de l étape 1 de l algorithme : 1.1. Lire le nombre de billets de 20$ 1.2. Lire le nombre de billets de 10$ 1.3. Lire le nombre de billets de 5$ 1.4. Lire le nombre de billets de 2$ 1.5. Lire le nombre de pièces de 1$ 1.6. Lire le nombre de pièces de 25 cents Raffinement de l étape 3 de l algorithme : 3.1. Lire le taux de courtage 3.2. Lire le montant de la commission 4

Raffinement de l étape 8 de l algorithme : 8.1. Calculer le nombre de billets de 500F (formule 5) 8.2. Calculer le nombre de billets de 100F (formules 5 et 6) 8.3. Calculer le nombre de billets de 50F (formules 5 et 6) 8.4. Calculer le nombre de pièces de 20F (formules 5 et 6) 8.5. Calculer le nombre de pièces de 10F (formules 5 et 6) 8.6. Calculer le nombre de pièces de 5F (formules 5 et 6) 8.7. Calculer le nombre de pièces de 2F (formules 5 et 6) 8.8. Calculer le nombre de pièces de 1F (formules 5 et 6) 8.9. Calculer le nombre de pièces de 50 centimes (formules 5 et 6) 8.10. Calculer le nombre de pièces de 20 centimes (formules 5 et 6) 8.11. Calculer le nombre de pièces de 10 centimes (formules 5 et 6) 8.12. Calculer le nombre de pièces de 5 centimes (formules 5 et 6) Raffinement de l étape 9 de l algorithme : 9.2. Afficher le nombre de billets de 100F 9.3. Afficher le nombre de billets de 50F 9.4. Afficher le nombre de pièces de 20F 9.5. Afficher le nombre de pièces de 10F 9.6. Afficher le nombre de pièces de 5F 9.7. Afficher le nombre de pièces de 2F 9.8. Afficher le nombre de pièces de 1F 9.9. Afficher le nombre de pièces de 50 centimes 9.10. Afficher le nombre de pièces de 20 centimes 9.11. Afficher le nombre de pièces de 10 centimes 9.12. Afficher le nombre de pièces de 5 centimes 5

4 Implantation /** ********************************************************************** \file monnaie.cpp \brief Ce programme convertit des dollars canadien en Francs en tenant compte des couts de conversion qui proportionnels au montant convertit. \author Gabriel Girard <b>entrees:</b> \li (\c clavier) nbr de pieces de chaque type (6 entiers) \li (\c clavier) le taux de courtage en poucentage (reel) \li (\c clavier) la commission (reel) \li (\c clavier) le taux de change (rel)taux <b>sorties:</b> \li (\c ecran) nombre de pieces de chaque type (11 entiers) Description: Ce programme effectue la convertion d un montant en dollars canadien en francs. Le montant en dollars D est entre sous forme d un nombre de billets et de pieces de differents types. A ce montant, il est soustrait un cout de transaction composee d un part d un certain taux de courtage TC sur le montant D et d une commission fixe C. Le montant final MC a convertir est donc obtenu par la formule: MC = D - partie_entiere_de((d*tc) + C) On peut alors deduire le montant en francs MF obtenu a l aide du taux de change X par MF = partie_entiere_de(x * MC) Le programme affiche alors une decomposition optimum du montant MF selon les billets et pieces disponibles en trouvant recursivement le quotient de la division du montant restant par la plus haute valeur de billet ou de pieces non utilises, et en affectant le reste au montant restant : si montantrestant = Q * valeurplushaute + R alors nb_billets_ou_pieces_valeurplushaute = Q et montantrestant = R Date de modification: 29 Aout 2004 Benoit Fraikin, charge de cours mise a jour aux normes du departement ********************************************************************** **/ /*-- Bibliotheques utilisees --*/ #include <iostream> using namespace std; 6

int main () { // constantes pour les differentes pieces de monnaie // pour bien calculer les centimes et cents on travaille en // cents ou centimes comme unite de base const int F500 = 50000, F100 = 10000, F50 = 5000, F20=2000, F10 = 1000; const int F5 = 500, F2 = 200,F1 = 100; const int Cent50 = 50, Cent20 = 20, Cent10 = 10, Cent5 = 5; const int D20 = 2000, D10 = 1000, D5 = 500, D2=200, D1 = 100, C25 = 25; const int NB_CENTS_DANS_UN_DOLLAR = 100; // Definitions des variables int Nb20Dollar, Nb10Dollar, Nb5Dollar, Nb2Dollar, Nb1Dollar, Nb25Cents; int Nb500F, Nb100F, Nb50F, Nb20F, Nb10F, Nb5F, Nb2F, Nb1F; int Nb50Centimes, Nb20Centimes, Nb10Centimes, Nb5Centimes; int CoutTransac; int MontantEnCents, MontantAChanger, MontantFrancs, MontantRestant; float TauxChange; float TauxCourtage, Commission; /* Lecture des pieces de chaque type */ cout << "Entrez le nombre de 20$: " << endl; cin >> Nb20Dollar; cout << "Entrez le nombre de 10$: " << endl; cin >> Nb10Dollar; cout << "Entrez le nombre de 5$: " << endl; cin >> Nb5Dollar; cout << "Entrez le nombre de 2$: " << endl; cin >> Nb2Dollar; cout << "Entrez le nombre de 1$: " << endl; cin >> Nb1Dollar; cout << "Entrez le nombre de 25 cents: " << endl; cin >> Nb25Cents; /* Calcul le montant detenu (en cents) */ MontantEnCents = (Nb20Dollar * D20) + (Nb10Dollar * D10) + (Nb5Dollar * D5) + (Nb2Dollar * D2) + (Nb1Dollar * D1) + (Nb25Cents * C25); /* Lecture taux de courtage et commission */ 7

cout << "Entrez le taux de courtage : "; cin >> TauxCourtage; cout << "Entrez le montant de la commission : "; cin >> Commission; /* Calcul des frais de la transaction et */ /* et deduction du montant a changer */ CoutTransac = (int)((commission * NB_CENTS_DANS_UN_DOLLAR) +(MontantEnCents *(TauxCourtage/100))); MontantAChanger = MontantEnCents - CoutTransac; /* Lecture du Taux de change */ cout << "Entrez le taux de Change (Dollar -> Francs) : "; cin >> TauxChange; /* Conversion du montant vers les Francs */ MontantFrancs = (int) (MontantAChanger * TauxChange); /* Calcul du nombre de billets et pieces en */ /* monnaie francaise */ Nb500F = (MontantFrancs / F500); MontantRestant = MontantFrancs % F500; Nb100F = (MontantRestant / F100); MontantRestant = MontantRestant % F100; Nb50F = (MontantRestant / F50); MontantRestant = MontantRestant % F50; Nb20F = (MontantRestant / F20) ; MontantRestant = MontantRestant % F20; Nb10F = (MontantRestant / F10) ; MontantRestant = MontantRestant % F10; Nb5F = (MontantRestant / F5); MontantRestant = MontantRestant % F5; Nb2F = (MontantRestant / F2); MontantRestant = MontantRestant % F2; Nb1F = (MontantRestant / F1); MontantRestant = MontantRestant % F1; Nb50Centimes = (MontantRestant / Cent50); MontantRestant = MontantRestant % Cent50; 8

Nb20Centimes = (MontantRestant / Cent20); MontantRestant = MontantRestant % Cent20; Nb10Centimes = (MontantRestant / Cent10); MontantRestant = MontantRestant % Cent10; Nb5Centimes = (MontantRestant / Cent5); MontantRestant = MontantRestant % Cent5; /* Affichage du nombre de monnaies et de */ /* en monnaie francaise */ cout << "Selon le taux de change de " << TauxChange <<"%, \nvos " << MontantEnCents/100 << "." << MontantEnCents%100 << "$ (- le cout de la transaction de " << CoutTransac/100 << "." << CoutTransac%100 << "), valent \n" << MontantFrancs/100 << " Francs et " << MontantFrancs%100 << " centimes. " << endl << "Vous recevrez donc :" << endl << Nb500F << " billets de 500F " << endl << Nb100F << " billets de 100F " << endl << Nb50F << " billets de 50F " << endl << Nb20F << " billets de 20F " << endl << Nb10F << " billets de 10F " << endl << Nb5F << " billets de 5F " << endl << Nb2F << " billets de 2F " << endl << Nb1F << " billets de 1F " << endl << Nb50Centimes << " pieces de 50 centimes " << endl << Nb20Centimes << " pieces de 20 centimes " << endl << Nb10Centimes << " pieces de 10 centimes " << endl << Nb5Centimes << " pieces de 5 centimes " << endl; } /* --- fin du programme ---*/ return 0; 9