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

Turbo Pascal Discussion :

Calculer la réduction et le montant à payer [Turbo Pascal]


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut Calculer la réduction et le montant à payer
    Voilà l'exercice

    Elaborer un programme qui permet de lire pour un client d'une agence de location de voitures le nom, la nationalité (marocaine ou etrangère), la
    durée de location et le prix unitaire, ensuite de calculer et afficher le prix
    total, la réduction et le montant à payer.
    * La réduction est 15% du prix total pour les marocains et 500 DHs pour chaque semaine complète pour les étrangers.
    Et mon travail le voici
    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
    ses crt;
     
    var   d,reste:byte;
          n,na,m,e:string;
          pu,pt,ru,nap:real;
     
     
    begin
    clrscr;
    write('Donner le nom du client:                ');readln(n);
    write('Donner la nationalit‚ du client:        ');readln(na);
    write('saiser la dur‚e du jour:                ');readln(d);
    write('saiser le prix unitaire du chaque jour: ');readln(d);
     
    if n='m' then
    ru:=pu*d*0.15
    nap:=(pu*d)-ru
     
     
     
    else if (n='e') and (d<7) then
     
           ru:=0
     
           else   if (n='e') and (d=7) then
     
           ru:=pu*d-500
     
                 else   if (n='e') and (d>7) then
     
                        reste:= d mod 7
     
                        ru:=( (d mod 7) - 500 ) + (reste * pu)
     
                        pt:=pu*d
     
                        nap:=pu*d-ru;
     
    writeln('le prix total est:     ',pt:4:2);
    writeln('la r‚duction est :     ',ru:4:2);
    writeln('le montant … payer est:',map:4:2);
    readln;
    end.
    Je demande une aide S.V.P

  2. #2
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Mon problème dans ce cas c'est le reste de la division

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hia,

    Conseil : donner des noms explicites aux variables, constantes, fonctions, procédures, types...

    Cela t'aurait peut-être évité ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    write('saiser la dur‚e du jour:                ');readln(d);
    write('saiser le prix unitaire du chaque jour: ');readln(d);
    Du coup, je n'ai pas vérifié le reste, sauf : pourquoi se limiter à un type byte pour les variables d et reste ?

  4. #4
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Du coup, je n''ai pas vérifié le reste, sauf :
    pourquoi se limiter à un type byte pour
    les variables d et reste ?
    Parce que la durée ne peut pas dépasser 250 et également le reste.

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hei,
    Citation Envoyé par agan2012 Voir le message
    parce que la duré ne peut pas dépasser 250 et également le reste
    Ok, mais ça pose un problème, dans cette ligne par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                        ru:=( (d mod 7) - 500 ) + (reste * pu)
    d étant du type byte, d mod 7 l'est également. Et quand tu lui enlève 500, ça risque d'entraîner un dépassement (ou même, ça entraîne un dépassement, je ne sais plus avec TP).

  6. #6
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    d étant du type byte, d mod 7 l'est également.
    Et quand tu lui enlève 500, ça risque d'entraîner un dépassement (ou même, ça entraîne un dépassement, je ne sais plus avec TP).
    Oui vous avez raison

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/03/2014, 10h56
  2. Calcul durée entre 2 front montant.
    Par Olivier6464 dans le forum LabVIEW
    Réponses: 0
    Dernier message: 24/07/2013, 14h11
  3. Calculer les réductions
    Par stinisma dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 10/10/2012, 21h38
  4. Transfert d'un montant calculé ds une table
    Par MSI260951 dans le forum Access
    Réponses: 1
    Dernier message: 18/12/2006, 11h11
  5. Fonction : calculer le dividende net à payer
    Par Bernard123 dans le forum Access
    Réponses: 5
    Dernier message: 27/10/2005, 14h45

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