Oppure

Loading
12/08/12 9:44
non riesco a capire cosa ho sbagliato in questo programma che deve trasformare euro in lire e viceversa, ecco il codice:

program valuta;
uses crt;
var
   quota:integer;
   moneta:string[20];
   euro:string[20];
   lire:string[20];
begin
 clrscr;
 writeln('scrivere il tipo di valuta da convertire (euro/lire) ');
 readln(moneta);
 if (moneta=euro) then
  begin
  writeln('scrivere la quota da convertire');
  readln(quota);
  writeln('ecco il risultato in lire');
  writeln(quota * 2000);
  readln()
  end
 else if (moneta=lire) then
   begin
   writeln('scrivere la quota da convertire');
   readln(quota);
   writeln('ecco il risultato in euro');
   writeln(quota div 2000);
   readln();
  end;
end.


qualcuno può riscrivere il codice corretto in modo che io posso capire cosa sbaglio?

cmq il problema si verifica quando scrivo: else if (moneta=lire) then
ma se scrivo solo else, poi qualsiasi parola scrivo (durante l'esecuzione del programma) esegue sempre il blocco per trasformare da lire in euro, ma perchè??
12/08/12 10:43
lorenzo
ma le variabili euro e lire dove le inizializzi?

Prima di clrscr aggiungi:

euro := 'euro';
lire := 'lire';
Ultima modifica effettuata da lorenzo 12/08/12 10:44
aaa
12/08/12 18:14
be questa volta invece appena scrivo euro o lire si chiude immediatamente!!
13/08/12 10:02
gigisoft
Scusate, ma c'e' prorpio bisogno delle variabili euro e lire ?

non sarebbe piu' corretto scrivere:

 if (UpCase(moneta)='EURO') then
  begin
[...]
  end
 else if (UpCase(moneta)='LIRE') then
   begin
[...]
  end;


e poi, se 'lire' e 'euro' sono di 4 caratteri, perche' moneta e' una stringa di 20? Vabbeh che ormai sui PC la memoria si spreca, ma e' bene avere l'abitudine a non abusare con l'uso delle risorse che, in altri ambiti, potrebbero essere molto piu' limitate.

Saluti.
aaa
30/09/12 14:35
problema risolto grazie gigisoft:)
17/10/12 13:19
gigisoft
Postato originariamente da alexxx99:

problema risolto grazie gigisoft:)


di nulla, figurati
aaa