Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - array monodimensionali - problemi sorgente guida
Forum - Pascal - array monodimensionali - problemi sorgente guida

Avatar
zuzzuviu (Normal User)
Newbie


Messaggi: 2
Iscritto: 13/04/2017

Segnala al moderatore
Postato alle 10:21
Giovedì, 13/04/2017
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.

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 945
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 20:50
Venerdì, 14/04/2017
Ciao!
Il sorgente
Codice sorgente - presumibilmente Delphi

  1. Program Esempio5;
  2. Uses Crt;
  3. Var nome:array[1..40] of string[60];
  4.     i:byte;
  5.     c:char;
  6.  
  7. begin
  8.     clrscr;
  9.     i:=1;
  10.     while nome[i]<> do
  11.       begin
  12.       writeln(Inserisci il nome numero ,i,:);
  13.       readln(nome[i]);
  14.       i:=i+1;
  15.       end;
  16.     clrscr;
  17.     repeat
  18.     write(Vuoi visualizzare un altro nome? s/n);
  19.     c:=readkey;
  20.     if c=s then
  21.       begin
  22.       write(Inserisci il numero associate a quel nome: );
  23.       readln(i);
  24.       write(Il nome numero ,i, è ,nome[i]);
  25.       readln;
  26.       clrscr;
  27.       end;
  28.     until c=n;
  29. 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:
Codice sorgente - presumibilmente Delphi

  1. Program Esempio5;
  2. Uses Crt;
  3. Var nome:array[1..40] of string[60];
  4.     i:byte;
  5.     c:char;
  6.  
  7. begin
  8.     clrscr;
  9.     i:=1;
  10.     while i<=40 do // Esegue il ciclo finché i  e <= a 40
  11.       begin
  12.       writeln('Inserisci il nome numero ',i, ' : ');
  13.       readln(nome[i]);
  14.       i:=i+1;
  15.       end;
  16.     clrscr;
  17.     repeat
  18.     write('Vuoi visualizzare un altro nome? s/n ');
  19.     c:=readkey;
  20.     writeln(c); // Visualizza il carattere inserito
  21.     if c='s' then
  22.       begin
  23.       write('Inserisci il numero associate a quel nome: ');
  24.       readln(i);
  25.       write('Il nome numero ',i,' e'' ', nome[i],' ');
  26.       readln;
  27.       clrscr;
  28.       end;
  29.     until c='n';
  30. end.

  

Ultima modifica effettuata da Poggi Marco il 14/04/2017 alle 20:52


Nulla va più veloce della luce, quindi rilassati.
PM Quote
Avatar
zuzzuviu (Normal User)
Newbie


Messaggi: 2
Iscritto: 13/04/2017

Segnala al moderatore
Postato alle 9:15
Giovedì, 27/04/2017
Ti ringrazio per la risposta!

Ora i conti tornano :k:

PM Quote