Probleme pascal repeat [Résolu]

Signaler
Messages postés
7
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
2 juillet 2007
-
Messages postés
7
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
2 juillet 2007
-
   




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é.
A voir également:

6 réponses

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
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;
Messages postés
7
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
2 juillet 2007

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
Messages postés
7
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
2 juillet 2007

   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
Messages postés
292
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
18 décembre 2014
3
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
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
effectivement il manque

uses crt, dos;
Messages postés
7
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
2 juillet 2007

Merci pour vos reponces je ne suis pas sur mon PC en ce moment mais je vais essayer tout ça dés demain .


Godan