Okkey il programma funziona però vorrei comunque uno sguardo di qualcuno più esperto riguardo la correttezza dell'algoritmo,ho tentavo vari scenari per vedere se era tutto giusto ma ho paura che sia solo una coincidenza che mi da le risposte giuste.
codice:
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
void leggi (char *nome,int *vet,int dim);
void stampa(int *vet,int n);
int ricerca_sequenza (int *vet,int *ricerca,int dim,int n);
int main ()
{
char nome[30];
cout<<"Inserisci nome file: ";
cin>>nome;
fstream file;
int numeri;
file.open(nome,ios::in);
if(!file)
{
cout<<"File non trovato"<<endl;
}
int dim=0;
while (file>>numeri)
dim++;
cout << "La dimensione del vettore e': " << dim <<endl;
int *vet;
vet = new int[dim];
leggi(nome,vet,dim);
int n;
cout << "Inserisci la dimensione della sequenza da cercare: ";
cin >> n;
int *ricerca;
ricerca = new int[n];
int cont = 0;
for (int i=0;i<n;i++)
{
cout << "Inserisci l'elemento " << cont+1 << ": ";
cin >> ricerca[i];
cont = cont +1;
}
cout << "Nel vettore la sequenza cercata si ripete " << ricerca_sequenza (vet,ricerca,dim,n) << " volte";
file.close();
cout << "\n\n";
system("pause");
}
void leggi (char*nome,int *vet,int dim)
{
fstream file;
file.open(nome,ios::in);
if(!file)
{
cout<<"File non trovato"<<endl;
}
for(int i=0;i<dim;i++)
{
file>>vet[i];
}
file.close();
cout << "Il vettore stampato e': ";
stampa(vet,dim);
}
void stampa(int *vet,int dim)
{
for(int i=0;i<dim;i++)
{
cout<< " | " << vet[i]<< " | ";
}
cout << "\n\n";
}
int ricerca_sequenza (int *vet,int *ricerca,int dim,int n)
{
int trovato = 0;
for (int i=0;i<dim;i++)
{
int j = 0;
while (j<n && vet[i]==ricerca[j])
{
j++;
i++;
if (j==n)
trovato++;
}
}
return trovato;
}