Salve, ho problemi con questo programma.. devo trovare l'array più piccolo nel più grande con tolleranza di almeno un elemento, ma è la prima volta che lavoro con la tolleranza quindi non so.. ho provato a fare qualche ricerca su internet e questo è il risultato:
/* scrivere una funzione booleana che riceva in input un array di interi v di dimensione dim_v
e un secondo array di interi w di dimensione dim_w (con dim_w<dim_v) e determini
se w è contenuto in v con tolleranze di al di più di un elemento. ad esempio se consideriamo
v : 4, 7, 8, 3, 5, 12, 19, -2
w : 8, -4, 5
l'array w è contenuto nell'array v con tolleranza 1 poichè in v è presente
la sequenza 8 3 5 che differisce da w per il solo elemento 3 */
#include <iostream>
#include <cmath>
using namespace std;
bool trova_array(int *v, int dim_v, int *w, int dim_w)
{
int cont=0;
int tolleranza= 1;
for (int i=0; i<=dim_w-dim_v;i++)
{
for (int j=0; j<dim_w;j++)
if(fabs(v[0+j]==w[i+j]) <= tolleranza)
cont++;
else
break;
if (cont==dim_w)
return true;
}
return false;
}
int main()
{
const int dim_v=8;
int v[]={4, 7, 8, 3, 5, 12, 19, -2};
const int dim_w=3;
int w[]={8,-4,-5};
bool trovato = trova_array(v,dim_v,w,dim_w);
if (trovato)
cout << "l'array è contenuto" << endl;
else
cout << "l'array non è contenuto" << endl;
return 0;
}
qualcuno piò dirmi cosa sbaglio? la funziona per vedere se l'array piccolo è contenuto nel più grande è corretta, ho problemi solo con la tolleranza