Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Ricerca Sequenziale.. vuoi proseguire?
Forum - Pascal - Ricerca Sequenziale.. vuoi proseguire?

Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Segnala al moderatore
Postato alle 19:13
Lunedì, 23/08/2010
Ciao ragazzi, sto imparando quindi ho copiato questo programma dal mio libro sul Pascal. Solo che c'è un problema: alla fine, quando chiede se si vuole proseguire, nonostante io inserisca S o s, il programma finisce, non ricomincia il ciclo repeat..until
Il codice è questo:

Codice sorgente - presumibilmente Delphi

  1. uses wincrt;
  2. const max = 50;
  3. var a : array[1..max] of string[25];
  4.     i,n : integer;
  5.     x : string;
  6.     segnala : boolean;
  7.     continua : char;
  8. begin
  9.   repeat
  10.     clrscr;
  11.     writeln('quanti nominativi vuoi introdurre? (N <= ',max,')');
  12.     readln(n);
  13.   until (n <= max);
  14.   for i := 1 to n do
  15.     begin
  16.       writeln('introduci il nominativo di posto ',i);
  17.       readln(a[i]);
  18.     end;
  19.   repeat
  20.     writeln('quale nominativo vuoi cercare?');
  21.     readln(x);
  22.     segnala := true;
  23.     i := 1;
  24.     while (i <= n) and segnala do
  25.       begin
  26.         if a[i] = x then
  27.           segnala := false;
  28.         i := i + 1;
  29.       end;
  30.     if segnala then
  31.       writeln(x,' non si trova nell''elenco dato')
  32.     else
  33.       writeln(x,' si trova al posto ',i - 1);
  34.     writeln('vuoi continuare la ricerca?');
  35.     writeln('(digita S per proseguire, un altro tasto per terminare)');
  36.     readln(continua)
  37.   until (continua <> 'S') or (continua <> 's');
  38. end.



Grazie.

P.S: Utilizzo Turbo Pascal per Windows.

Ultima modifica effettuata da bruno.demarini il 23/08/2010 alle 19:14
PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
4
Down
V
Segnala al moderatore
Postato alle 14:02
Sabato, 28/08/2010
potresti anche usare in maniera più elegante secondo me un
Codice sorgente - presumibilmente Pascal

  1. until uppercase(continua)<>'S';


PM
Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 21:05
Sabato, 28/08/2010
Testo quotato

Postato originariamente da a_butta:

potresti anche usare in maniera più elegante secondo me un
Codice sorgente - presumibilmente Pascal

  1. until uppercase(continua)<>'S';




Hai ragione. D'ora in poi farò sempre così;
grazie mille, ciao :)

PM
Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:25
Lunedì, 23/08/2010
Ho risolto da solo. In pratica avevo sbagliato la condizione, che doveva essere
until (continua <> 's') and (continua <> 'S')
Lasciando OR, una delle due condizioni risultava sempre vera e quindi il ciclo finiva.
Grazie lo stesso, ciao :)

PM