Esercizio con Vettori

di il
3 risposte

Esercizio con Vettori

La traccia dell'esercizio è il seguente:
Siano assegnati due vettori di numeri interi con ugual riempimento. Verificare che per ogni coppia V1i e V2j (con V1i appartenente al primo vettore e V2j al secondo) esista una delle due condizioni:
- una sequenza delle ultime cifre (almeno due) di V1i coincida con una sequenza di cifre iniziali di V2j come si può riscontrare nelle seguenti coppie (2321, 21456), (6357, 6357), (12908, 2908);
- una sequenza delle ultime cifre (almeno due) di V2i coincida con una sequenza di cifre iniziali di V1j.
Per ciascuna delle coppie che soddisfa una delle due condizioni riportare la sequenza di cifre in comune, il tipo di condizione e la posizione i e j all'interno dei vettori V1 e V2;

Non capisco cosa chiede esattamente l'esercizio.
Devo prendere gli ultimi elementi della prima sequenza e farli coincidere con lo stesso numero di elementi della seconda?

3 Risposte

  • Re: Esercizio con Vettori

    Esattamente così.
    Devi prendere gli ultimi elementi della prima sequenza e confrontarli con il numero della seconda sequenza per vedere se coincidono oppure no.
    Spero di esserti stato utile.
  • Re: Esercizio con Vettori

    Questo per ora è il codice che ho scritto per controllare e stampare a video gli elementi in comune, però appena eseguo si blocca. Ho sbagliato qualcosa?
    #include <iostream>
    
    using namespace std;
    
    int main () {
    	//Inizializzazione:
    	const int N = 5;
    	int V1[N] = {2, 3, 2, 1};
    	int V2[N] = {2, 1, 4, 5, 6};
    	int V3[N];
    	bool check = false;
    	int posi = 0;
    	int posj = 0;
    	
    	//Checking:
    	int i = 0, j = 0;
    	for (; i < N; i++) {
    		if (V1[i] == V2[j]) {
    			for (j = i; j < N; j++) {
    				while (V1[j] == V2[j]) {
    					V3[j] = V1[j];
    				}
    				if (V1[j] != V2[j]) {
    					for (int k = 0; k < N; k++) {
    						V3[k] = 0;
    					}
    					j = 0;
    					break;
    				}
    			}
    		}
    	}
    	
    	//Output:
    	cout << "[ ";
    	for (int k = 0; k < N; k++) {
    		cout << V3[k] << " ";
    	}
    	cout << "]";
    	
    	//Terminazione:
    	return 0;
    }
    Devo prima capire cosa ho sbagliato qui e poi vedere come trovarmi le posizioni i e j(di cosa però?) e la condizione usata.
  • Re: Esercizio con Vettori

    Ho capito perché il codice si bloccava. Avevo creato un ciclo while infinito.
    Ho modificato però ora il problema è che mi stampa sempre un vettore nullo:
    #include <iostream>
    
    using namespace std;
    
    int main () {
    	//Initialization:
    	const int N = 5;
    	int V1[N] = {2, 3, 2, 1, 4};
    	int V2[N] = {2, 1, 4, 5, 6};
    	int V3[N] = {0};
    	bool check = false;
    	int posi = 0;
    	int posj = 0;
    	
    	//Procedure:
    	//Checking:
    	int j = 0, a = 0, b = 0, count = 0, buff = 0;
    	for (int i = 0; i < N; i++) {
    		buff = i;
    		if (V1[i] == V2[j]) {
    			do
    			{
    				V3[j] = V2[j];
    				a = i;
    				b = j;
    				count++;
    				i++;
    				j++;
    			} while (V1[i] == V2[j] && j < N);
    			if (V1[a + 1] != V2[b + 1]) {
    				for (int k = 0; k < N; k++) {
    					V3[k] = 0;
    				}
    				j = 0;
    				count = 0;
    				i = buff;
    			}
    			else {
    				break;
    			}
    		}
    	}
    	
    	//Output:
    	cout << "[ ";
    	for (int k = 0; k < count + 2; k++) {
    		cout << V3[k] << " ";
    	}
    	cout << "]";
    	
    	//Termination:
    	return 0;
    }
Devi accedere o registrarti per scrivere nel forum
3 risposte