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