ho scritto un programma in C++ che dovrebbe, partendo da un file parole.txt, riconoscere le parole minuscole, maiuscole e miste e scriverle rispettivamente su Minuscole.txt, Maiuscole.txt e ignorare le parole miste. Esempio:
parole.txt
tastiera MOUSE StEreo.
TeLecomando SVEGLIA bottiglia.
......
Maiuscole.txt
MOUSE
SVEGLIA
...
Minuscole.txt
tastiera
bottiglia
...
questo è il codice:
Codice: Seleziona tutto
#include <iostream>
#include <fstream>
using namespace std;
enum tipo_stringa {UPPER, LOWER, MIXED};
void costruisci_file();
tipo_stringa check_array_of_char(char []);
int main()
{
costruisci_file();
return 0;
}
void costruisci_file()
{
char parola[30];
fstream file_parole, file_minuscole, file_maiuscole;
tipo_stringa tipo;
file_parole.open("parole.txt", ios::in);
file_minuscole.open("Minuscole.txt", ios::out);
file_maiuscole.open("Maiuscole.txt", ios::out);
if((!file_parole) || (!file_minuscole) || (!file_maiuscole))
{
cerr << "File non esistente" << endl;
return;
}
while(file_parole >> parola)
{
cout << parola;
tipo = check_array_of_char(parola);
if(tipo == LOWER)
file_minuscole << parola << endl;
else if(tipo == UPPER)
file_maiuscole << parola << endl;
}
file_parole.close();
file_maiuscole.close();
file_minuscole.close();
return;
}
tipo_stringa check_array_of_char(char parola[])
{
tipo_stringa tipo;
int i;
if(islower(parola[0]))
tipo = LOWER;
else
tipo = UPPER;
i = 1;
while((parola[i] != '\0') && (parola[i] != '.'))
{
if(( (islower(parola[i])) && (tipo == LOWER) ) || ( (!islower(parola[i])) && (tipo == UPPER)))
continue;
else
tipo = MIXED;
i++;
}
if((parola[i] == '.') && (i > 0))
parola[i-1] = '\0';
return tipo;
}
non fa' perfettamente niente. Spero che qualcuno possa aiutarmi.