salve a tutti, devo risolvere questo problema per l universita:
"Calcola quante volte una parola, data in input dall'utente, è presente nel testo iniziale. Non distingue fra maiuscole e minuscole."
non riesco a risolvere questa precisa parte " non distingue fra minuscole e maiuscole" cosi ho pensato di usare tolower() ma mi da errore di compilazione....
questo è quello che ho fatto ( notare che ho incluso librerie che non servono per questa funzione, ma mi servono per altre funzioni non ancora fatte )
MAIN
codice:
// Main
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#include <string>
#include <cstdlib>
#include <ctype.h>
#include "header.h"
using namespace std;
int main(){
ifstream in_data;
// funzione che chiede
// all'utente quale
// file vuole aprire
get_data(in_data);
//funzione che conta quante volte
//la parola immessa dall'utente compare
cout<<"la parola precedentemente messa compare nel testo "<<WordCounter(in_data)<<" volte"<<endl;
}
FUNZIONI
codice:
//Funzioni
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#include <string>
#include <cstdlib>
#include <ctype.h>
#include "header.h"
using namespace std;
//funzione che chiede all'utente quale file aprire
// e lo apre
void get_data(ifstream& resultingStream)
{
string fileName;
do
{
cout<<"Inserisci il nome del file contenente i dati: ";
cin>>fileName;
resultingStream.open(fileName.c_str());
}
while (resultingStream.fail());
}
// ************************************************************************
//funzione che chiede all'utente una parola
// e conta quante ce ne sono nell file in input
int WordCounter (ifstream& in_data){
string word;
string otherword;
int cont=0;
vector<string>vectword;
vector<string>vectotherword;
cout<<"inserisci una parola per vedere quante volte compare nel testo"<<endl;
cin>>word;
// funzione della libreria <ctype.h>
// che trasforma le lettere maiuscole
// in lettere minuscole
vectword.push_back(tolower(word));
while (in_data>>otherword){
// stessa funzione applicata
// nella riga 40
vectotherword.push_back(tolower(otherword));
}
for(int i=0; i < vectotherword.size(); i++){
if(vectword[0] == vectotherword[i]){
cont++;
}
}
return cont;
}
HEADER
codice:
// Header
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#include <string>
#include <cstdlib>
#include <ctype.h>
using namespace std;
// funzione che chiede all'utente
// il nome del file e lo apre
void get_data(ifstream& resultingStream);
// funzione che chiede all'utente
// di inserire una parola per
// vedere quante volte compare
// nel testo del file aperto
// chiesto in precedenza
int WordCounter (ifstream& in_data);
ringrazio di cuore tutti quelli che mi risponderanno, saluti