{ 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 }