{ File:  sequenz1.pas }

{ Scopo: ciclo repeat }

program MassimaSequenzaDi0;
{ Legge da tastiera una sequenza di 0 e 1, terminata da 2.
  Calcola la lunghezza della piu' lunga sottosequenza di 0, e la stampa.

  ESEMPIO: 0 0 1 0 1 0 0 0 1 0 1 2 ---> 3 }

var
  bit     : 0..2;       { l'elemento della sequenza appena letto }
  cont    : integer;    { lunghezza attuale della sequenza di zeri }
  maxlung : integer;    { valore temporaneo della massima lunghezza }

begin
  writeln('Inserisci una sequenza di 0, 1 terminata da 2');
  cont := 0;                  { non abbiamo ancora letto niente }
  maxlung := 0;               { all'inizio la lunghezza massima e' nulla }
  repeat
    read(bit);
    if bit = 0 then
    begin                     { abbiamo letto un altro 0 }
      cont := cont + 1;       { dobbiamo aggiornare la lunghezza della
                                sequenza corrente }
      if cont > maxlung then  { se necessario, aggiorna il massimo temporaneo}
        maxlung := cont       { alternativa piu` costosa:
                                maxlung := maxlung +1     }
    end
    else
      cont := 0;              { abbiamo letto un 1 (o il 2 finale) e dobbiamo
                                azzerare la lunghezza della sequenza corrente }
  until bit = 2;              { abbiamo letto il 2 e terminiamo il ciclo }
  writeln('La piu'' lunga sottosequenza di soli zeri e'' lunga ', maxlung)
end. { MassimaSequenzaDi0 }