domenica 12 febbraio 2017

COMPITO 8 (PICCIALLI , CHIANESE)

COMPITO 8
#include<iostream>
#include<fstream>
#include<string>

#define MAX 100

using namespace std;

void apriFile(ifstream &file);
void caricaFile(ifstream &file, int vet[], int &riemp);
void richiediSequenza(int *&sequenza, int &lung);
int verificaPresenza(int sequenza[], int fileVet[], int lung, int riemp);

int main(){
ifstream mioFile;
int *sequenza;
int fileVet[MAX];
int riemp, lung, trovato;

apriFile(mioFile);
caricaFile(mioFile, fileVet, riemp);
richiediSequenza(sequenza, lung);
trovato = verificaPresenza(sequenza, fileVet, lung, riemp);

if (trovato == 0)
cout << "Sequenza non trovata nel file!\n";
else
cout << "Sequenza trovata " << trovato << " volte nel file!\n";

system("PAUSE");

return 0;
}

void apriFile(ifstream &file){
string percorso;

cout << "Inserire il percorso del file: ";
do{
cin >> percorso;
file.open(percorso, ios::in);
if (!file)
cout << "Errore nell'apertura del file, inserire un nuovo percorso: ";
} while (!file);

return;
}

void caricaFile(ifstream &file, int vet[], int &riemp){
riemp = 0;

while (!file.eof()){
file>>vet[riemp];
riemp++;
}
return;
}

void richiediSequenza(int *&sequenza, int &lung){
cout << "Inserire la lunghezza della sequenza: ";
do{
cin >> lung;
if (lung < 2)
cout << "Valore non valido, inserire un numero maggiore di 1: ";
} while (lung < 2);

sequenza = new int[lung];

for (int i = 0; i < lung; i++){
cout << "Inserire l'elemento alla posizione " << i << ": ";
cin>>sequenza[i];
}
}

int verificaPresenza(int sequenza[], int fileVet[], int lung, int riemp){
int indice = 0;
bool ricerca = false;
int ricorrenze = 0;
int i = 0;
int primo = 0;
while(i<riemp){
if (fileVet[i] != sequenza[indice] && ricerca){
ricerca = false;
indice = 0;
}
if (fileVet[i] == sequenza[indice] && !ricerca){
ricerca = true;
indice++;
primo = i;
}
else if (fileVet[i] == sequenza[indice] && ricerca){
indice++;
if (indice == lung){
ricorrenze++;
ricerca = false;
indice = 0;
i = primo;
}
}
i++;
}

return ricorrenze;
}

Nessun commento :

Posta un commento