/* File:  sequenz1.c */
/* Time-stamp: "2001-03-13 12:51:57 calvanes" */
/* Scopo: ciclo do-while */

#include <stdio.h>

/* 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
*/

int main(void)
{
  int bit;            /* l'elemento della sequenza appena letto    */
  int cont = 0;       /* lunghezza attuale della sequenza di zeri;
                         inizialmente non abbiamo ancora letto nulla */
  int maxlung = 0;    /* valore temporaneo della massima lunghezza;
                         inizialmente e` 0 */

  printf("Inserisci una sequenza di 0, 1 terminata da 2\n");
  do {
    scanf("%d", &bit);
    if (bit == 0) {                             /* e` stato letto un altro 0 */
      cont++;               /* aggiorna la lunghezza della sequenza corrente */
      if (cont > maxlung)    /* se necessario, aggiorna il massimo temporaneo*/
        maxlung = cont;
                          /* alternativa piu` costosa: maxlung := maxlung +1 */
    }
    else                              /* e` stato letto un 1 (o il 2 finale) */
      cont = 0;               /* azzera la lunghezza della sequenza corrente */
  } while (bit != 2);                  /* quando si legge 2 il ciclo termina */

  printf("La piu` lunga sottosequenza di soli zeri e` lunga %d\n", maxlung);

  return 0;
}