Programme Turbopascal

Fermé
juju4926 - 8 mars 2008 à 20:02
 juju4926 - 9 mars 2008 à 12:55
Bonjour,
je dois faire un programme pascal qui s 'adresse à un utilisateur qui souhaiterait avoir la facture ttc (conso+prime) avec le tarif vert A5.

Dans le programme j 'aimerais mettre un message d 'erreur à chaque fois que la personne rentre une lettre mais je ne sais pas comment faire.
Je souhaiterais aussi que lorsque la consommation d 'energie reactive depasse de 40% l 'energie active, il y est un message disant : L 'energie reactive vous sera facturer.

Voilà, ça serait vraiment génial de m 'aider, j 'ai besoin de vous!!!

Voici le programme :

PROGRAM Tarif_vert;

USES CRT;

VAR

(*Coefficient r‚ducteur*)
A1:REAL;
B1:REAL;
C1:REAL;
D1:REAL;


(*Puissance*)
PS:INTEGER;

PR:REAL;

P1:REAL;
P2:REAL;
P3:REAL;
P4:REAL;
P5:REAL;



(*Consommation*)
HPH:REAL;
HCH:REAL;
HPE:REAL;
HCE:REAL;
HPTE:REAL;

HPTER:REAL;
HPHR:REAL;
HCHR:REAL;

Energ1:REAL;
Energ2:REAL;

EnR1:REAL;
EnR2:REAL;


ERPTE1:REAL;
ERHPH1:REAL;
ERHCH1:REAL;


ERPTE2:REAL;
ERHPH2:REAL;
ERHCH2:REAL;


EHPH1:REAL;
EHCH1:REAL;
EHPE1:REAL;
EHCE1:REAL;
Pointe1:REAL;

EHPH2:REAL;
EHCH2:REAL;
EHPE2:REAL;
EHCE2:REAL;
Pointe2:REAL;


(*Prix de l 'energie active et reactive totale*)

T11:REAL;
T22:REAL;

(*Prix de l'energie*)
PRIM:REAL;
PHPH:REAL;
PHCH:REAL;
PHPE:REAL;
PHCE:REAL;
PHPTE:REAL;

PNRJ1:REAL;

PRIM1:REAL;
PRIM2:REAL;
PTTC:REAL;

cHPHR:REAL;
cHCHR:REAL;
cHPTER:REAL;


(*Montant total*)
Total1:REAL;
Total2:REAL;


(*Economie r‚alis‚*)
Eco:REAL;

(*Choix pour la prime*)
Choix:REAL;



(*Les differentes taxes*)
TVA1:REAL;
TL1:REAL;

TVA2:REAL;
TL2:REAL;


BEGIN


A1:=0.76;
B1:=0.31;
C1:=0.15;
D1:=0.06;

PRIM:=38.04;
PHPTE:=0.13357;
PHPH:=0.06893;
PHCH:=0.04443;
PHPE:=0.03062;
PHCE:=0.02158;

(*Prix energie reactive*)

PNRJ1:=0.001737;


CLRSCR;



WRITELN ('TARIF VERT A5 MOYENNE UTILISATION');


repeat

WRITELN ('Entrer votre puissance souscrite (en kW) :');

WRITELN ('Votre puissance soucrite doit etre sup‚rieur ou ‚gale … 250KW');
READLN (PS);
Textcolor(red);
IF (PS<250) OR (PS>10000) THEN Writeln ('Mauvaise saisie');
Textcolor(white);

UNTIL (PS>=250) AND (PS<=10000);

(*Demandez consommation des differentes periodes HPTE,HPH,HCH,HPE,HCE*)
BEGIN
WRITELN (' ');
WRITELN (' ');
WRITELN ('Entrer votre consomation durant les heures de pointes (en KWh) :');
READLN (HPTE);
WRITELN (' ');
WRITELN ('Entrer votre consomation durant les heures pleines d''hiver (en KWh) :');
READLN (HPH);
WRITELN (' ');
WRITELN ('Entrer votre consomation durant les heures creuses d''hiver (en KWh) :');
READLN (HCH);
WRITELN (' ');
WRITELN ('Entrer votre consomation durant les heures pleines d''ete (en KWh) :');
READLN (HPE);
WRITELN (' ');
WRITELN ('Entrer votre consomation durant les heures creuses d''ete (en KWh) :');
READLN (HCE);
WRITELN (' ');
WRITELN (' ');





(*Demandez de la consommation reactive par periode*)
WRITELN (' ');
WRITELN ('Entrez votre consommation reactive durant les heures de pointes (en Kvarh):');
READLN (HPTER);
WRITELN (' ');
WRITELN ('Entrez votre consommation reactive durant les heures pleines d''hiver (en Kvarh):');
READLN (HPHR);
WRITELN (' ');
WRITELN ('Entrez votre consommation reactive durant les heures creuses d''hiver (en Kvarh):');
READLN (HCHR);
WRITELN (' ');
WRITELN (' ');
IF EnR1>(0.4*Energ1) THEN WRITELN ('L energie reactive vous sera facturé');
IF EnR1<(0.4*Energ1) THEN WRITELN ('L energie reactive ne vous sera pas facturé');
END;

(*Demander le choix du calcul de la puissance souscrite*)
WRITELN ('Voulez vous : ');
WRITELN ('1/ la meme puissance souscrite pour toute l''annee ');
WRITELN ('2/ effectuer un denivele de puissance ');
WRITELN (' ');
WRITELN ('Choisissez entre 1 ou 2');
READLN (Choix);


(*Si le choix est 2, demander les puissances pour chaque poste tarifaire*)
IF (Choix=2) THEN
BEGIN
WRITELN (' ');
WRITELN (' ');
WRITELN ('Puissance pour la periode de pointe (en KW) : ');
READLN (P1);
WRITELN (' ');
WRITELN ('Puissance pour la periode Heure Pleine Hiver (en Kw) : ');
READLN (P2);


WRITELN (' ');
WRITELN ('Puissance pour la periode Heure Creuse Hiver (en Kw) :');
READLN (P3);


WRITELN (' ');
WRITELN ('Puissance pour la periode Heure Pleine d''Ete (en Kw) :');
READLN (P4);


WRITELN (' ');
WRITELN ('Puissance pour la periode Heure Creuse d''Ete (en Kw) :');
READLN (P5);


WRITELN(' ');

(*Calcul de l'energie reactive consomm‚*)

ERPTE1:=(HPTER*PNRJ1);

ERHPH1:=(HPHR*PNRJ1);

ERHCH1:=(HCHR*PNRJ1);


(*Calcul de l'energie active consomm‚*)


Pointe1:=(HPTE*PHPTE);

EHPH1:=(HPH*PHPH);

EHCH1:=(HCH*PHCH);

EHPE1:=(HPE*PHPE);

EHCE1:=(HCE*PHCE);


(*Total energie montant energie separee*)


Energ1:=Pointe1+EHPH1+EHCH1+EHPE1+EHCE1;

EnR1:=ERPTE1+ERHPH1+ERHCH1;


(*Prix energie total reactive +active*)

T11:=(Energ1+EnR1);


(*Calcul des taxes locales*)
TL1:=(PRIM1+T11)*(80/100)*((4+8)/100);

(*Calcul de la TVA*)
TVA1:=(PRIM1*0.055)+(T11*0.196)+(TL1*0.196);

(*Reduction de la prime Fixe*)
Pr:=(P1+((P2-P1)*A1)+((P3-P2)*B1)+((P4-P3)*C1)+((P5-P4)*D1));

(*Calcul de la prime fixe*)
PRIM1:=(Pr*PRIM);

(*Calcul du montant de la facture*)
Total1:=PRIM1+T11+TL1+TVA1;

(*Calcul de l'‚conomie r‚alis‚*)
Eco:=(P5-Pr)*PRIM;

(*Montant prime fixe TTC*)
PTTC:=PRIM1*1.055;


CLRSCR;


Textcolor (green);
WRITELN (' ________ Votre facture _______ ');
Textcolor (white);
WRITELN (' ');
WRITELN ('- Le montant de l''energie active consomm‚ est de ',Energ1:0:2,' euro ');WRITELN (' ');
WRITELN (' ');
WRITELN (' ');
WRITELN ('- Le montant de l''energie reactive consomm‚ est de ',EnR1:0:2,' euro ');
WRITELN (' ');
WRITELN (' ');
WRITELN ('- Le montant de la prime fixe est de ',PRIM1:0:2,' euro TTC');
WRITELN (' ');
WRITELN (' ');
WRITELN ('- L''economie r‚alis‚ sur la prime fixe est de ',Eco:0:2,' euro ');
WRITELN (' ');
WRITELN (' ');
WRITELN ('- La taxe locale est de ',TL1:0:2, 'euro ');
WRITELN (' ');
WRITELN (' ');
Textcolor (red);
WRITELN ('_ Le montant de votre facture annuelle est de ',Total1:0:2,' euro ');
Textcolor (white);
WRITELN (' ');

END

ELSE IF (Choix=1) THEN

BEGIN

(*Calcul de la prime fixe*)
PRIM2:=(PS*PRIM);

(*Calcul de l'energie consomm‚*)


ERPTE2:=(HPTER*PNRJ1);

ERHPH2:=(HPHR*PNRJ1);

ERHCH2:=(HCHR*PNRJ1);



(*Calcul de l'energie active consomm‚*)


Pointe2:=(HPTE*PHPTE);

EHPH2:=(HPH*PHPH);

EHCH2:=(HCH*PHCH);

EHPE2:=(HPE*PHPE);

EHCE2:=(HCE*PHCE);


(*Total energie montant energie separee*)


Energ2:=Pointe2+EHPH2+EHCH2+EHPE1+EHCE2;

EnR2:=ERPTE2+ERHPH2+ERHCH2;


(*Prix energie total reactive +active*)


T22:=(Energ2+EnR2);


(*Calcul des taxes locales*)
TL2:=(PRIM2+T22)*(80/100)*((4+8)/100);

(*Calcul de la TVA*)
TVA2:=(PRIM2*0.055)+(T22*0.196)+(TL2*0.196);

(*Calcul du montant de la facture*)
Total2:=PRIM2+TL2+T22+TVA2;

(*Montant prime fixe ttc*)
PTTC:=(PRIM2*1.055);

CLRSCR;

Textcolor (green);
WRITELN (' ________ Votre Facture ________ ');
Textcolor (white);
WRITELN (' ');
WRITELN ('- Le montant de la prime fixe est de ',PTTC:0:2,' euro TTC ');
WRITELN (' ');
WRITELN (' ');
WRITELN ('- Le montant de la taxe locale est de ',TL2:0:2, ' euro ');
WRITELN (' ');
WRITELN (' ');
WRITELN ('- Le montant de l''energie active consomm‚ est de ',Energ2:0:2,' euro ');
WRITELN (' ');
WRITELN (' ');
WRITELN ('- Le montant de l''energie reactive consomm‚ est de ',EnR2:0:2,' euro ');
WRITELN (' ');
WRITELN (' ');
Textcolor(red);
WRITELN ('_ Le montant de votre facture annuel est de ',Total2:0:2,' euro TTC');
Textcolor(white);
END;
END.


END.

4 réponses

Bonjour,

Juste une petite critique avant de répondre à ta question

Tu saisis un grand nombre de valeurs avant d'éditer ta facture. Que se passe t-il si tu te trompes dans la saisie d'une valeur? Il faut aller jusqu'au bout et tout recommencer.

Il serait plus judicieux de présenter ta feuille de saisie comme un formulaire, en utilisant les flèches pour te déplacer dans ton tableau, ça fait un peu plus professionnel.

Ce qui m'amène ta question.
Il faut saisir tes valeurs non comme des nombres mais comme du texte. Ensuite tu verifie que le mot saisi ne contient que des chiffres et/ou le point décimal. si c'est bon, tu changes le texte en valeur numérique.

Autre méthode.
Si tu veux que l'utilisateur ne saisisse que des chiffes, il faut analyser la touche qui a été frappée et ignorer toutes les touches autres que les chiffes 0..9 et le point décimal.
- La fonction ReadKey lit un caractère au clavier.
- La fonction KeyPressed teste si une touche a été appuyée.
- Certaines touches comme les flèches et les F1 F2... ont un code à deux chiffres.
La procédure GotoXY déplace le curseur à une position XY de l'écran.
Les fonctions WhereX et WhereY donne la position du curseur.

A+.
0
Merci AMigo pour ta réponse. Le problème c 'est que je ne sais pas faire ce que tu viens de me dire. En pascal, j 'ai appris que quelques formule (ex: certaines boucles) et je peux pas dire que je suis un crack, loin de là.

Ton idée sur le formulaire est super, mais si on ne l 'a pas vue en cours, le profs va se demander :" Mais comment tu as fais" deja que je sui pas bon la dedans alors bon...

Amigo, y 'a t-il un autre moyen de faire ce que je voudrais faire avec des trucs simple ? dis moi comment faire. MErci
Et si y 'en a pas d 'autre et ben dis moi comment écrire ce que tu viens de me conseiller. MErci bcp !!

Juju4926
0
Bonjour,

Effectivement, Il vaut mieux suivre le programme du cours et laisser de coté le formulaire, pour le moment.
Essayes de résoudre le problème de la saisie des valeurs numérique.

Est-ce que tu sais ce qu'est une fonction, c'est au programme? sinon ça va être vraiment difficile ou du moins fastidieux.
L'idée c'est de faire une fonction qui prend un texte en paramètre, vérifie si ce texte est une valeur numérique, et renvoie la valeur numérique si c'est bon, sinon elle demande de ressaisir la valeur.

On peut continuer la dessus, ou c'est encore un peu avancé pour toi?

A+.
0
Re Amigo ! Merci pour ta réponse.

J 'avais l 'impression de connaitre un peu le pascal mais ce que tu me dis ça me dépasse. On a pas du l 'aborder en cours.
Si tu veux on passe à l 'oral demain, et pour l 'instant y 'a qu 'un mec de ma classe qui est passé. Il est fort là-dedans et je crois qu 'il a réussi à faire ce que je te demande. Mais il a surement du passé par ce que tu m 'as dis mais je n 'ai aucune idée du comment il faut procéder.

Bref, si y 'a pas d 'autre solution, ben tant pis ! ^^ Moi et la porgrammation ça fait presque 2 !

Si t 'as une autre solution que je pourrais eventuellement faire, dis le moi ! En tout cas merci de tes conseils.

Juju4926
0