Oppure

Loading
23/08/10 17:13
bruno.demarini
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:

uses wincrt;
const max = 50;
var a : array[1..max] of string[25];
    i,n : integer;
    x : string;
    segnala : boolean;
    continua : char;
begin
  repeat
    clrscr;
    writeln('quanti nominativi vuoi introdurre? (N <= ',max,')');
    readln(n);
  until (n <= max);
  for i := 1 to n do
    begin
      writeln('introduci il nominativo di posto ',i);
      readln(a[i]);
    end;
  repeat
    writeln('quale nominativo vuoi cercare?');
    readln(x);
    segnala := true;
    i := 1;
    while (i <= n) and segnala do
      begin
        if a[i] = x then
          segnala := false;
        i := i + 1;
      end;
    if segnala then
      writeln(x,' non si trova nell''elenco dato')
    else
      writeln(x,' si trova al posto ',i - 1); 
    writeln('vuoi continuare la ricerca?');
    writeln('(digita S per proseguire, un altro tasto per terminare)');
    readln(continua)
  until (continua <> 'S') or (continua <> 's');
end.


Grazie.

P.S: Utilizzo Turbo Pascal per Windows.
Ultima modifica effettuata da bruno.demarini 23/08/10 17:14
aaa
23/08/10 17:25
bruno.demarini
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 :)
aaa
28/08/10 12:02
a_butta
potresti anche usare in maniera più elegante secondo me un
until uppercase(continua)<>'S';
aaa
28/08/10 19:05
bruno.demarini
Postato originariamente da a_butta:

potresti anche usare in maniera più elegante secondo me un
until uppercase(continua)<>'S';


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