#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main() {
	// Dichiarazione delle variabili per i conteggi
	int vocali = 0, consonanti = 0, cifre = 0;
	int spazi = 0, linee = 0, carattere = 0;
	int i;

	// Array per contare la frequenza di ciascuna delle 26 lettere dell'alfabeto (A-Z)
	int frequenza[26] = {0};

	FILE *fin = fopen("testo.txt", "r");
	if (fin == NULL) {
		printf("Errore: Impossibile aprire il file testo.txt\n");
		return 1;
	}
	printf("\nFile testo.txt:\n");
	system("type testo.txt");
	printf("\n-------------------------------------\n");

	FILE *fout = fopen("testo2.txt", "w");
	if (fout == NULL) {
		printf("Errore: Impossibile creare il file testo2.txt\n");
		fclose(fin); // Chiudiamo il primo file prima di uscire
		return 1;
	}

	//  Lettura del file carattere per carattere
	int c;
	while ((c = fgetc(fin)) != EOF) {
		carattere++;

		// Sostituisci la cifra con * nel secondo file di testo
		if (c >= '0' && c <= '9') {
			cifre++;
		}
		if (c >= 'a' && c <= 'z')
			c -= 32;
		if (c >= 'A' && c <= 'Z') {
			frequenza[c - 'A']++;
			if  (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
				vocali++;
			else {
				consonanti++;
				//printf("Consonante=%c\n", c);
				// Scrittura nel file di copia con il codice ASCII (es. #65 al posto di A)
				//fprintf(fout, ....);
			}

		}

		else { // NON č UNA LETTERA
			// Gestione dei caratteri speciali ovvero spazi, invio e punteggiatura
			if (c == ' ')
				spazi++;
			else if (c == '\n')
				linee++;
			//fputc(c, fout); // Copia il carattere cosė com'č
		}
	}

	// Controllo di sicurezza se il file contiene testo ma non finisce con un invio bisogna comunque contarla come una linea
	if (carattere > 0 && c != '\n') {
		linee++;
	}

	int max_freq = 0;
	int min_freq = 0; // Un valore molto alto come punto di partenza per il minimo

	// Ciclo per esaminare tutte le 26 lettere dell'alfabeto
	for (int i = 0; i < 26; i++) {
		// Cerchiamo la lettera PIŲ frequente (Massimo)
		if (frequenza[i] > frequenza[max_freq])
			max_freq = i;


	}

	for (i = 0; i < 26; i++)
		if (frequenza[i] > 0)
			min_freq = i;
	for (i = 0; i < 26 && frequenza[i] > 0; i++) {
		if (frequenza[i] < frequenza[min_freq] )
			min_freq = i;
	}

	fclose(fin);
	fclose(fout);

// Stampa a video di tutti i risultati accumulati
	printf("--- RISULTATI ANALISI DEL PROGRAMMA---\n");
	printf("1) Vocali: %d, Consonanti: %d, Cifre: %d\n", vocali, consonanti, cifre);

// Stampiamo la lettera pių/meno frequente solo se nel file c'era almeno una lettera
	if (max_freq != 0) {
		printf("2) Lettera piu' frequente: %c (%d volte)\n", max_freq + 'a', frequenza[max_freq]);

		printf("   Lettera meno frequente: %c (%d volte)\n", min_freq + 'a', frequenza[min_freq]);
	} else {
		printf("2) Nessuna lettera trovata nel file.\n");
	}

	printf("3) Dimensione file: %d byte, Spazi: %d, Linee totali: %d\n", carattere, spazi, linee);
	printf("4) Copia modificata salvata con successo nel file 'testo2.txt'\n");

	printf("\nFile testo2.txt:\n");
	system("type testo2.txt");
	printf("\n-------------------------------------\n");

	return 0;




}
