Ciao ragazzi, ho fatto questo programmino in C++ (una vecchia traccia d'esame del mio prof di fondamenti di informatica) che prevede la lettura di una sequenza di numeri da file di testo e di confrontarla con un'altra sequenza presa da tastiera. Lo scopo è verificare se la seconda sequenza (quella inserita da tastiera) è presente all'interno di quella del file e quante volte questa sequenza è presenta (numero di occorrenze della seconda nella prima). Il mio programma gira e fa quello che la traccia chiede, volevo solo avere un'eventuale correzione perchè il codice che ho scritto mi sembra un po' "maccheronico" non so xD
#include <iostream>
#include <fstream>
#define MAX 50
using namespace std;
void controllo_file(fstream& file, char nome[MAX]);
int lettura(fstream& file, int sequenza[], int& dim);
void occorrenze(fstream& file, int sequenza[], int& dim, int& cont);
int main(int argc, char** argv) {
int sequenza[MAX], dim=0, cont=0;
char nome[MAX];
fstream file;
cout<<"***Programma realizzato da Andrea Barra Matricola N46002375***\n\n";
controllo_file(file, nome);
dim=lettura(file, sequenza, dim);
cout<<"\nParole Lette:\n";
for (int i=0; i<dim; i++){
cout<<sequenza[i]<<" ";
}
occorrenze(file, sequenza, dim, cont);
cout<<"\n\nLa sequenza inserita è presente "<<cont<<" volte nel file!";
return 0;
}
void controllo_file(fstream& file, char nome [MAX])
{
cout<<"Inserire nome del file: ";
cin>>nome;
file.open("sequenza.txt", ios::in);
if (!file){
cout<<"Impossibile aprire il file specificato!";
exit (1);
}
}
int lettura(fstream& file, int sequenza[], int& dim)
{
int i=0;
while(!file.eof()){
file>>sequenza[i];
i++;
}
return i;
}
void occorrenze(fstream& file, int sequenza[], int& dim, int& cont)
{
int vet[MAX];
cout<<"\n\nInserire la sequenza da controllare:";
for (int i=0; i<4; i++){
cout<<"Inserire l'elemento "<<i+1<<":";
cin>>vet[i];
}
for (int i=0; i<dim; i++){
for (int j=0; j<4; j++){
if (sequenza[i]==vet[j])
cont++;
}
}
cont=cont/4;
}
Grazie in anticipo!
EDIT: Mentre continuavo a testare il programma, mi sono accorto che se inserisco nel vettore vet lo stesso numero ma che è presente anche nella prima sequenza, il programma mi dice che il numero è presente due volte, quindi presumo che il mio ciclo di controllo sia errato. Come potrei risolvere?