13/04/17 8:21
zuzzuviu
Buongiorno ragazzi.
Sto ripassando un pò di pascal, ma mi sono inchiodato sul codice del "Capitolo 10° - Gli array monodimensionali" della guida.
A parte la mancanza di apici, ci sta qualcosa che non torna. Molto probabilmente nel blocco while, in particolare l condizione di terminazione.
Potreste gentilmente venirmi incontro?!? Non riesco a far girare l'esempio...
Grazie e complimenti per tutto il vostro impegno.
aaa
14/04/17 18:50
Poggi Marco
Ciao!
Il sorgente
Program Esempio5;
Uses Crt;
Var nome:array[1..40] of string[60];
i:byte;
c:char;
begin
clrscr;
i:=1;
while nome[i]<> do
begin
writeln(Inserisci il nome numero ,i,:);
readln(nome[i]);
i:=i+1;
end;
clrscr;
repeat
write(Vuoi visualizzare un altro nome? s/n);
c:=readkey;
if c=s then
begin
write(Inserisci il numero associate a quel nome: );
readln(i);
write(Il nome numero ,i, è ,nome[i]);
readln;
clrscr;
end;
until c=n;
end.
Contiene un errore di logica sui cicli:
La variabile i funziona come indice, deve assumere i valori da 1 fino all'ultimo elemento dell vettore, in modo da memorizzare tutte le proprie celle.
Il programma corretto:
Program Esempio5;
Uses Crt;
Var nome:array[1..40] of string[60];
i:byte;
c:char;
begin
clrscr;
i:=1;
while i<=40 do // Esegue il ciclo finché i e <= a 40
begin
writeln('Inserisci il nome numero ',i, ' : ');
readln(nome[i]);
i:=i+1;
end;
clrscr;
repeat
write('Vuoi visualizzare un altro nome? s/n ');
c:=readkey;
writeln(c); // Visualizza il carattere inserito
if c='s' then
begin
write('Inserisci il numero associate a quel nome: ');
readln(i);
write('Il nome numero ',i,' e'' ', nome[i],' ');
readln;
clrscr;
end;
until c='n';
end.
Ultima modifica effettuata da Poggi Marco 14/04/17 18:52
aaa