Probleme pascal repeat

Résolu
godan13 Messages postés 7 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 2 juillet 2007 - 1 juil. 2007 à 22:08
godan13 Messages postés 7 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 2 juillet 2007 - 2 juil. 2007 à 22:31
   




Bonjour, c' est mon premier "programme" (si vu l'absence d'interface graphique, et le niveau de la source on peut apeler ca un programme















) et il vise a faire un convertisseur d'unitées de temperature (K en °C , °C en °F, etc).
J'aurais voulu faire ca comme suit:

1. Demander a l'utilisateur si il veut une conversiion du °C au °F; du °F au °C; du °C au K; du k au
    °F; etc...

2. Si il repond du °F au °C alors
           Demander la temperature a convertire ;
           Afficher rep '°C = '(rep*1.8)+32' °F'
   Demander a l'utilisateur si il veut refaire une conversion
   avec ces unitées (*)

et ca pour toutes les conversions, et ce que je voudrais c'est que quand il repond oui (*)  je lui remette l'étape 2., j'aurais pensé faire comme suit:

2.si il repond du °F au °C alors
     repeter
             demander la temperature
             affich rep ac calcul
        demander si il veut conserver ces unitées
     jusqu'a ce que la rep = non

Et ainsi, en encadrant tout le "programme" dans une boucle il aurais pu, quand l'util. ne voulais plus des unitées qu'il avais choisi revenire a l' "acueuil" et en choisire d'autre. Mais je me demandais :
1 quelle type de boucle utiliser pour encadrer le "programme" ??
2 pour repeter l'étape 2 je voulais faire une boucle repeat ... until rep = non mais est-ce que ça ne risque pas de repeter simplement la réponse du premier calcul??

Merci d'avance,
Morgan

P.S. Desolé pour le roman mais je n'ai jamais su poser et condenser mes idées.
P.S.S. Je programme avec TP7 et ne trouvant pas de  forum réservé j'ai pensé que celui ci serais le plus adapté.

6 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
1 juil. 2007 à 23:12
comme au bon vieux temps :

const
  k_ESC = $00011b;     {Echape                                 }

PROCEDURE ColBKG(col_BG:word);
Begin Textbackground(col_BG); end;

PROCEDURE ColTXT(col_TX:word);
Begin Textcolor(col_TX); end;

PROCEDURE GXY(coordX,coordY:word);
Begin Gotoxy(coordX,CoordY); end;

PROCEDURE CLS;

Begin Clrscr; end;

PROCEDURE SND(freq,drt:word);
Begin sound(freq); delay(drt); nosound; end;

// ------
var Kmd        : char;
    ConvResult : single;
    OldUni     : byte;

const
  DegUni : array[0..2] of string = ('°C','°F','°K');

function CtF : single;
begin
  Cls;
  ColTxt(8);
  if ConvResult <> 0 then

  begin

    Writeln('Ancien resultat : '+FloatToStr(ConvResult)+DegUni[OldUni]);

    Writeln('');

  end;
  ColTxt(11);

  Write('Temperature (Celsius) a convertir (Fareneith) : ');

  ReadLn(CtF);

  CtF := { convertion }
  OldUni := 1;

end;

function CtK : single;
begin

  Cls;
  ColTxt(8);
  if ConvResult <> 0 then

  begin

    Writeln('Ancien resultat : '+FloatToStr(ConvResult)+DegUni[OldUni]);

    Writeln('');

  end;

  ColTxt(11);

  Write('Temperature (Celsius) a convertir (Kelvin) : ');

  ReadLn(CtK);

  CtK := { convertion }
  OldUni := 2;

end;

function FtC : single;
begin

  Cls;
  ColTxt(8);
  if ConvResult <> 0 then

  begin

    Writeln('Ancien resultat : '+FloatToStr(ConvResult)+DegUni[OldUni]);

    Writeln('');

  end;

  ColTxt(11);

  Write('Temperature (Fareneith) a convertir (Celsius) : ');

  ReadLn(FtC);

  FtC := { convertion }
  OldUni := 0;

end;

function FtK : single;
begin

  Cls;
  ColTxt(8);
  if ConvResult <> 0 then

  begin

    Writeln('Ancien resultat : '+FloatToStr(ConvResult)+DegUni[OldUni]);

    Writeln('');

  end;

  ColTxt(11);

  Write('Temperature (Fareneith) a convertir (Kelvin) : ');

  ReadLn(FtK);

  FtK := { convertion }
  OldUni := 2;

end;

function KtC : single;
begin

  Cls;
  ColTxt(8);
  if ConvResult <> 0 then

  begin

    Writeln('Ancien resultat : '+FloatToStr(ConvResult)+DegUni[OldUni]);

    Writeln('');

  end;

  ColTxt(11);

  Write('Temperature (Kelvin) a convertir (Celsius) : ');

  ReadLn(KtC);

  KtC := { convertion }
  OldUni := 0;

end;

function KtF : single;
begin

  Cls;
  ColTxt(8);
  if ConvResult <> 0 then

  begin

    Writeln('Ancien resultat : '+FloatToStr(ConvResult)+DegUni[OldUni]);

    Writeln('');

  end;

  ColTxt(11);

  Write('Temperature (Kelvin) a convertir (Fareneith) : ');

  ReadLn(KtF);

  KtF := { convertion }
  OldUni := 1;
end;

procedure ShowResult;
begin
  ColTxt(5);
  Writeln('Resultat = '+FloatToStr(ConvResult)+DegUni[OldUni]);
  Writeln('');
  ColTxt(11);
  Writeln('Appuyez sur une touche pour continuer...');
  repeat until KeyPressed;
end;

procedure Main;
begin
  Cls;
  ColTxt(11);
  writeln('[1] Celsius > Fareneith');

  writeln('[2] Celsius > Kelvin');

  writeln('[3] Fareneith > Celsius');

  writeln('[4] Fareneith > Kelvin');

  writeln('[5] Kelvin > Celsius');

  writeln('[6] Kelvin > Fareneith');
  writeln('');
  writeln('[r] Effacer l'ancien resultat.');

  writeln('');
  writeln('[q] Quitter');
end;

function KInterpret : byte;
const
  KTB : array[boolean] of byte = (0,42);
begin  KInterpret :KTB[ Kmd 'q' ];

  if KInterpret = 0 then
  begin
    case Kmd of
      'r' : ConvResult := 0;
      '1' : begin ConvResult := CtF; ShowResult; end;
      '2' : begin ConvResult := CtK; ShowResult; end;
      '3' : begin ConvResult := FtC; ShowResult; end;
      '4' : begin ConvResult := FtK; ShowResult; end; 
      '5' : begin ConvResult := KtC; ShowResult; end;
      '6' : begin ConvResult := KtF; ShowResult; end;
      else
      begin
        Cls;
        Snd(250,30);
        Snd(250,30);
        ColTxt(1);
        writeln('Commande inconnue ('+Kmd+')');
        Delay(5000);
      end;
    end;
  end;
end;

var Ret : byte;

begin
  ConvResult := 0;
  Ret := 0;
  Repeat
    if Ret = 0 then
       Main;
    Kmd := readkey;
    Ret := KInterpret;
  Until Ret = 42;
end;
3
godan13 Messages postés 7 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 2 juillet 2007
2 juil. 2007 à 11:08
Merci pour ta reponse mais pourais-tu, s'ilte plait, t'expliquer un peu plus car je n'ai a vrai dire rien compri^^

@+
Godan
3
godan13 Messages postés 7 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 2 juillet 2007
2 juil. 2007 à 15:14
   A y est, je mesui rensegné et j'ai compri (enfin en gros) car j'ai un problemme : pour textbackground,
textcolor,
gotoxy et
clrscr ainsi que pour
floattostr
TP7 m'a dis, au moment de compiler, qu'il y avais une "erreur 3 unknow idenifier" . J'ai cherché sur google et altavista et on me renvoyais que sur des forums delphi, mais a aucun moment je n'ai vu ce type de probleme de compilation sous TP7 (ni sous delphi d'ailleur), je me tourne donc encors une fois vers le forum de codes sourses.

Merci d'avance
Godan

P.S. HHEELLPP PLIIZZ
3
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
2 juil. 2007 à 17:59
Bonjour,

Pour ton probléme, regarde d'abord l'aide de TP7. Tu y découvrira une montagne d'information. Le programme de FOXI ne te donne pas la ligne des librairie utilisée ( la ligne uses crt par exemple). Je pense que ton probléme se trouve là. Il doit te manquer la librairie ou se trouve les gotoxy et compagnie dont tu as besoin.

Bon code
Oniria
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
2 juil. 2007 à 21:15
effectivement il manque

uses crt, dos;
3
godan13 Messages postés 7 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 2 juillet 2007
2 juil. 2007 à 22:31
Merci pour vos reponces je ne suis pas sur mon PC en ce moment mais je vais essayer tout ça dés demain .


Godan


 
3
Rejoignez-nous