Created
December 3, 2020 08:41
-
-
Save vittodevit/4c1e4c756c5fef8935d180f65498484d to your computer and use it in GitHub Desktop.
Conta tutte le lettere maiuscole, minuscole ed altro in un file di testo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <fstream> | |
#include <sstream> | |
#include <cstring> | |
using namespace std; | |
//nessun menù, solo funzione di contatore, si presuppone che il menù salvi le righe di testo in un file | |
int main(){ | |
ifstream ifs ("testo.txt", ifstream::in); //apertura file di testo | |
string buffer; //stringa di buffer | |
int contatori[53] = {0}; //inizializziamo un array di contatori (2x l'alfabeto + cella extra + padding) | |
//per ogni riga del file | |
while(getline(ifs, buffer)){ | |
int len = buffer.length(); //ottieni la lunghezza | |
char bufc[len+1]; //crea un array della lunghezza del buffer +1 di padding | |
strcpy(bufc, buffer.c_str()); //copia il buffer nel buffer array di caratteri | |
//per tutti i caratteri nell'array | |
for (char c : bufc){ | |
//se i caratteri sono maiuscoli (codice ascii) | |
if(c > 64 && c < 91){ | |
contatori[c-65]++; //incrementa la cella dell'array che corrisponde alla lettera dell'alfabeto (valore ascii - 65) | |
} | |
//se la lettera è maiuscola | |
else if(c > 96 && c < 123){ | |
contatori[c-71]++; //incrementa la cella dell'array che corrisponde alla lettera dell'alfabeto (valore ascii - 71) | |
} | |
//se è un altro carattere | |
else{ | |
contatori[52]++; //incrementa ultima cella | |
} | |
} | |
} | |
//per tutti i contatori | |
for(int i=0; i<53; i++){ | |
//se corrisponde ad un contatore maiuscolo | |
if(i < 26){ | |
char curr = i + 65; //ottieni il valore ascii originale prendendo l'indice ed aggiungendo 65 | |
cout << "Per il carattere '" << curr << "' sono state trovati " << contatori[i] << " risultati" << endl; //messaggio console | |
}else if(i > 25 && i < 52){ | |
char curr = i + 71; //ottieni il valore ascii originale prendendo l'indice ed aggiungendo 71 | |
cout << "Per il carattere '" << curr << "' sono state trovati " << contatori[i] << " risultati" << endl; | |
}else{ | |
cout << "Per tutti gli altri caratteri sono stati trovati " << contatori[52] << " risultati" << endl; //tutto il resto | |
} | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment