feat: Initial commit
This commit is contained in:
66
Laboratorio 4/sottovettori.c
Normal file
66
Laboratorio 4/sottovettori.c
Normal file
@@ -0,0 +1,66 @@
|
||||
// Laboratorio 4 - Esercizio 1
|
||||
// Matteo Schiff - s295565
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user