program sem03e01; uses crt; var {Variables d'entrée} nbBtChamp, nbBtVinR, nbBtVinB: integer; {Nombre de bouteilles des boissons} livraison: char; {Variable du choix de la livraison} {Variables de travail} pHtvaChamp, pHtvaR, pHtvaB, pTvacChamp, pTvacB, {B = vin blanc et R= vin rouge } pTvacR, champ, vinR, vinB, tportChamp, tportB, tportR, nbCartChamp: real; {Variables de sortie} pHtvaTot, pTvacTot, pTportTot : real; const pBtChamp= 12.50; pBtVinR= 8.70; pBtVinB= 6.25; pTportVin= 0.35; pTportChamp= 3; tva= 0.21; cautChamp= 0.15; cautVinR=0.12; cautVinB=0.10; {Commande du client (données)} procedure commandeClient; begin writeln ('Nombre de bouteilles de champagne(Cartons de 6,12 ou 18 bouteilles):'); readln (nbBtChamp); writeln ('Nombre de bouteilles de vin rouge:'); readln (nbBtVinR); writeln ('Nombre de bouteilles de vin blanc:'); readln (nbBtVinB); writeln ('-----------------------------------------------------------------------'); if (nbBtChamp =0) and (nbBtVinR=0) and (nbBtVinB=0) then writeln('Erreur commande') end; procedure transport; begin writeln('Faut-il effectuer la livraison? (o/n)'); readln(livraison); livraison := lowercase(livraison); end; {Calcul des résultats} procedure calcul; begin {Champagne} Champ := (pBtChamp + cautChamp) * nbBtChamp; pHtvaChamp := Champ; pTvacChamp := pHtvaChamp * tva + pHtvaChamp; nbCartChamp := nbBtChamp div 6; {Vin rouge} VinR := (pBtVinR + cautVinR) * nbBtVinR; pHtvaR := vinR; pTvacR := pHtvaR * tva + pHtvaR; if (livraison = 'o') then tportR := nbBtVinR * pTportVin {Prix transport vin rouge} else tportR := 0; if (nbBtVinR > 100) then tportR := (nbBtVinR * pTportVin) - (40 * pTportVin); {Réduction si nbr bout > 100} {Vin blanc} VinB := (pBtVinB + cautVinB) * nbBtVinB; pHtvaB := vinB; pTvacB := pHtvaB * tva + pHtvaB; if (livraison = 'o') then tportB := nbBtVinB * pTportVin {Prix transport vin blanc} else tportB := 0; if (nbBtVinB > 100) then tportB := (nbBtVinB * pTportVin) - (40 * pTportVin); {Réduction si nbr bout > 100} {Total} pHtvaTot := pHtvaChamp + pHtvaB + pHtvaR; {Prix total hors taxe} pTvacTot := pTvacChamp + pTvacB + pTvacR; {Prix total taxe comprise} end; procedure verificationNbChamp; begin {Vérification que le nbre de bout. de champ est un multiple de 6} if (nbBtChamp mod 6 = 0) then begin calcul; end else begin writeln ('Erreur commande: Nombre de bouteilles de champagne!'); end; {Affichage des résultats} procedure afficherRes; begin writeln ('---------------------------------------------------------------'); writeln ('Votre commande:'); writeln ('Champagne:',nbBtChamp ' bouteilles'); writeln ('Livraison champagne:' ' euros'); writeln ('Prix champagne Hors Taxe:',pHtvaChamp ' euros'); writeln ('Vin rouge:',nbBtVinR ' bouteilles'); writeln ('Livraison vin rouge:',tportR ' euros'); writeln ('Prix vin rouge Hors Taxe:',pHtvaR ' euros'); writeln ('Vin blanc:',nbBtVinB 'bouteilles'); writeln ('Livraison vin blanc:',tportB ' euros'); writeln ('Prix vin blanc Hors Taxe:',pHtvaB ' euros'); writeln ('Prix total hors taxe:', pHtvaTot 'euros'); writeln ('Prix a payer:',pTvacTot ' euros'); end; begin commandeClient; transport; calcul; verificationNbChamp; afficherRes; end.