// Laboratorio 4 - Esercizio 1 // Matteo Schiff - s295565 #include #include #define INPUT_FILE "./vettore.txt" #define MAX_LEN 30 void sottoSequenze(int V[MAX_LEN], int N); void sottoSequenze(int V[MAX_LEN], int N) { int start = 0; // memorizza l'inizio del sottovettore corrente int maxLen = 0; // memorizza la grandezza del massimo sottovettore decrementata di uno int positions[30]; // memorizza gli indici dei sottovettori con lunghezza massima trovati int lastPosition = 0; // memorizza la posizione dell'ultimo elemento salvato in `positions` for (int i = 0; i < N; i++) { if (V[i] == 0) { start = i+1; } if ((i - start) == maxLen) { positions[lastPosition] = start; lastPosition++; } else if ((i - start) > maxLen) { positions[0] = start; lastPosition = 1; maxLen = i - start; } } printf("I sottovettori sono di dimensione massima (%d):\n", maxLen + 1); for (int j = 0; j < lastPosition; j++) { // Per ogni sottovettore ... for (int x = 0; x < maxLen + 1; x++) { // ... stampa il sottovettore printf("%d ", V[positions[j]+x]); } putchar('\n'); } } int main() { int V[MAX_LEN], N; FILE *fp_read; fp_read = fopen(INPUT_FILE, "r"); if (fp_read == NULL) { printf("Errore nell'apertura del file\n"); return 1; } for (N = 0; N < MAX_LEN && !feof(fp_read); N++) { if (fscanf(fp_read, "%d ", &V[N]) != 1) break; } sottoSequenze(V, N); fclose(fp_read); return 0; }