/* Nome: _____ Mario Cognome: __ Montanari Classe: ___ 3AIN Data: _____ 21/03/2025 Realizzare una funzione per ciascuna delle seguenti richieste: - estrarre una linea a caso da un file esempio "femminili.txt", “maschili.txt”, “verbi.txt”, “complementiOggetto.txt”; - modificare il file verbi.txt mettendo in minuscolo la prima lettera di ogni riga; - modificare il file “complOggNUM.txt” togliendo la parte numerica e lo spazio posti all’inizio di ogni riga esempio di riga: “71 un armadio” → “un armadio”; - calcolare il soggetto più lungo fra: - soggetti (maschili e femminili); - verbi; - complementi oggetto. - comporre delle frasi casuali con la struttura soggetto + verbo + complementoOggetto. */ #include #include #include #include #define MAX 4 #define MIN 1 #define MAX_LEN 1000+1 using namespace std; void estraiNomeCasuale(int n) { switch(n) { case 1: { FILE *fp = fopen("femminili.txt", "rt"); if (fp != NULL) { char line[MAX_LEN]; int righe = 0; while (fgets(line, MAX_LEN, fp) != NULL) { righe++; } int risultato = rand() % righe; int riga = 0; rewind(fp); char string[MAX_LEN]; while (fgets(line, MAX_LEN, fp) != NULL) { if (riga == risultato) { strcpy(string, line); break; } else { riga++; } } fclose(fp); cout << string << endl; } else { perror("Error (source)"); } break; } case 2: { FILE *fp = fopen("maschili.txt", "rt"); if (fp != NULL) { char line[MAX_LEN]; int righe = 0; while (fgets(line, MAX_LEN, fp) != NULL) { righe++; } int risultato = rand() % righe; int riga = 0; rewind(fp); char string[MAX_LEN]; while (fgets(line, MAX_LEN, fp) != NULL) { if (riga == risultato) { strcpy(string, line); break; } else { riga++; } } fclose(fp); cout << string << endl; } else { perror("Error (source)"); } break; } case 3: { FILE *fp = fopen("verbi.txt", "rt"); if (fp != NULL) { char line[MAX_LEN]; int righe = 0; while (fgets(line, MAX_LEN, fp) != NULL) { righe++; } int risultato = rand() % righe; int riga = 0; rewind(fp); char string[MAX_LEN]; while (fgets(line, MAX_LEN, fp) != NULL) { if (riga == risultato) { strcpy(string, line); break; } else { riga++; } } fclose(fp); cout << string << endl; } else { perror("Error (source)"); } break; } case 4: { FILE *fp = fopen("complementiOggettoN.txt", "rt"); if (fp != NULL) { char line[MAX_LEN]; int righe = 0; while (fgets(line, MAX_LEN, fp) != NULL) { righe++; } int risultato = rand() % righe; int riga = 0; rewind(fp); char string[MAX_LEN]; while (fgets(line, MAX_LEN, fp) != NULL) { if (riga == risultato) { strcpy(string, line); break; } else { riga++; } } fclose(fp); cout << string << endl; } else { perror("Error (source)"); } break; } default: cout << "Numero non valido!" << endl; return; } } void makeLower(char *line) { for (int i = 0; line[i] != '\0'; i++) { line[i] = tolower(line[i]); } } void rendiMinuscolo(char *nomeFile) { FILE *fp = fopen(nomeFile, "r+t"); if (fp != NULL) { char line[MAX_LEN]; long pos = ftell(fp); while (fgets(line, MAX_LEN, fp) != NULL) { fseek(fp, pos, SEEK_SET); makeLower(line); fputs(line, fp); fseek(fp, 0, SEEK_CUR); pos = ftell(fp); cout << line; } fclose(fp); } else { perror("Error (source)"); } } void eliminaParteNumerica(char *nomeFile) { FILE *fp = fopen(nomeFile, "r+t"); if (fp != NULL) { char str[MAX_LEN]; while ((fgets(str, sizeof(str), fp)) != NULL) { for (int i = 0; str[i] != '\0'; i++) { if (isalpha(str[i]) || str[i] == ' ') { cout << str[i]; } } cout << endl; } fclose(fp); } else { perror("Error (source)"); } } void calcolaLunghezza(char *nomeFile) { } void formaFrase(char *nomeFile) { } int main(void) { srand(time(NULL)); int n = rand() % (MAX - MIN + 1) + MIN; estraiNomeCasuale(n); rendiMinuscolo("verbi.txt"); cout << endl << endl; eliminaParteNumerica("complementiOggettoN.txt"); cout << endl << endl; //calcolaLunghezza(); //cout << endl << endl; //formaFrase(); //cout << endl; return 0; }