[C++] Verificare se l'array più piccolo è contenuto in quello più grande.

di il
6 risposte

[C++] Verificare se l'array più piccolo è contenuto in quello più grande.

Buonasera a tutti, sono alle prese con la scrittura di un programma che legga due array di interi da input e che determini se l'array più piccolo è contenuto nell'array più grande. Tuttavia il programma continua a stamparmi il messaggio " l'array non è contenuto" nonostante lo sia, quindi credo di aver omesso qualcosa nel programma.
Questo è il programma che ho scritto:

#include <iostream>
using namespace std;
#include <new>

int * alloca_array ( const int dim )
{
return new ( nothrow ) int [dim];
}

void dealloca_array ( int * & v )
{
delete [] v;
v = NULL;
}

int * alloca_array_2 ( const int dimensione )
{
return new ( nothrow ) int [dimensione];
}

void dealloca_array_2 ( int * & w )
{
delete [] w;
w = NULL;
}


void leggi_array ( int * const v , const int dim )
{
cout << " inserisci gli elementi dell'array " << endl;
for ( int i = 0; i < dim ; i ++ )
{
cout << " v [ " << i << " ] = ";
cin >> v ;
}
}

void leggi_secondo_array( int * const w , const int dimensione )
{
cout << " inserisci gli elementi dell'array " << endl;
for ( int j = 0; j < dimensione ; j ++ )
{
cout << " v [ " << j << " ] = ";
cin >> w [j];
}
}

bool cerca_array1_in_array2 ( int * const y , const int dim , int const * x , const int dimensione)
{
for ( int i = 0; i < dim; i++ )
for ( int j = 0; j < dimensione; j++ )
if ( y[dim] < x[dimensione] && y == x[j] )
return true;
return false;
}

int main ()
{
int * v = NULL;
int * w = NULL;
int dim_array;
int dim_array_2;

cout << " inserisci la dimensione dell'array ";
cin >> dim_array;
cout << " inserisci la dimensione del secondo array";
cin >> dim_array_2;

v = alloca_array (dim_array);

w = alloca_array_2(dim_array_2);

leggi_array ( v , dim_array);
leggi_secondo_array( w , dim_array_2 );


bool corrisponde = cerca_array1_in_array2( v , dim_array , w , dim_array_2 );
if (corrisponde)
cout << " l'array più piccolo è contenuto nell'array più grande " << endl;
else
cout << " l'array non è contenuto " << endl;

dealloca_array (v);
dealloca_array_2(w);

return 0;

}

Spero possiate consigliarmi qualcosa per approfondire i miei studi in questo campo in quanto principiante. Grazie in anticipo a tutti.

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte