Oppure

Loading
31/03/13 17:44
Crisped
Ho un altro problema, il programma sembra essere giusto infatti il programma me lo compila correttamente solo che il risulato non è quello sperato :(

il programma è questo:
program esercizio2;
uses crt;
type q_nome= string [20];
var i, n: integer;
    nome, nome_max, nome_min: q_nome;
    valore, valore_max, valore_min: real;

procedure q_max(valore: real; nome: q_nome;
                var valore_max: real; var nome_max: q_nome);

Begin
  if (valore>valore_max) then
  begin
    valore:=valore_max;
    nome:=nome_max;
  end;
End;

procedure q_min(valore: real; nome: q_nome;
                var valore_min: real; var nome_min: q_nome);

Begin
  if (valore>valore_min) then
  begin
    valore:=valore_min;
    nome:=nome_min;
  end;
End;

Begin
  clrscr;
  valore_max:=0;
  valore_min:=100;
  writeln('Inserisci il numero dei titoli quotati in borsa');
  readln(n);

  for i:=1 to n do
  begin
    writeln('Inserisci il nome del titolo');
    readln(nome);
    writeln('Inserisci il valore del titolo');
    readln(valore);
    q_max(valore, nome, valore_max, nome_max);
    q_min(valore, nome, valore_min, nome_min);

  end;
  writeln('Il titolo con pi— valore vale ', valore_max:6:2,
          ' e si chiama ', nome_max);
  writeln('Il titolo con meno valore vale ', valore_min:6:2,
          ' e si chiama ', nome_min);
  readln;
End.


Il problema è che il risultato dovrebbe essere:
"Visualizzare il nome e il valore della quotazione più alta e quella più bassa"
ma esce così:
"Il titolo con più valore vale 0.00 e si chiama"
"Il titolo con meno valore vale 100.00 e si chiama"
Grazie per l'aiuto ;)
aaa
01/04/13 9:12
Poggi Marco
Ciao!

Ho letto il codice, e ho trovato alcune piccole imperfezioni.
Ecco le procedure corrette:
procedure q_max(valore: real; nome: q_nome;
                var valore_max: real; var nome_max: q_nome);
Begin
  if (valore>valore_max) then
  begin
    valore_max:=valore;  
    nome_max:=nome;
    {Ho invertito termini dell' uguaglianza}
  end;
End;
 
procedure q_min(valore: real; nome: q_nome;
                var valore_min: real; var nome_min: q_nome);
Begin
  if (valore<valore_min) then {Ho inserito l' operatore minore}
  begin
    valore_min:=valore;
    nome_min:=nome;
    {Ho invertito termini dell' uguaglianza}
  end;
End;
aaa
01/04/13 18:26
Crisped
Grazie mille, ora va :)
aaa