-

[Suggerimento] Programma in c che stampa gli elemeti non comuni di 2 vettori senza ripetizioni

#1
Salve è tutto il giorno che provo a risolvere questo problema, in pratica caricati 2 vettori V1 e V2 bisogna stampare gli elementi che v1 ha ma V2 no... Il vero probleme è che in caso in V1 ci fosse un numero che in V2 non ce ma ripetuto il programma deve stamparlo solo 1 volta...




La mia idea principale era quella di salvare tutti gli elementi in un 3 vettore dove ci veniva salvato solo 1 volta quel numero... ma era solo un idea in pratica non ho la piu pallida idea di come fare


QUESTO è IL CODICE che ho provato a scrivere ma che non funziona

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100


/*Dati 2 vettori di dimensione n, riempirli di numeri casuali (37-230), Stampare a video
Tutte gli elementi non comuni dei 2 vettori una sola volta*/




int main()
{
system("color 0a");
srand(time(NULL));
int v1[MAX],v2[MAX],i,j,lung,cont=0,v3[MAX],k=0,contd=0;
printf("Inserisci la lunghezza del vettore: ");
scanf("%d",&lung);
i=0;


//caricamento vettori
do
{
v1=rand()%193+37;
v2=rand()%193+37;
i++;
}while(i<lung);


//Stampa v1
printf("\nIl vettore 1 \x8a\ stato caricato con i seguenti numeri: \n");
i=0;
do
{
printf("[%d] ",v1);
i++;
}while(i<lung);


//stampa v2
printf("\n\nIl vettore 2 \x8a\ stato caricato con i seguenti numeri: \n");
i=0;
do
{
printf("[%d] ",v2);
i++;
}while(i<lung);


i=0;
j=0;
k=0;

//Caricamento del 3 vettore cercando gli elementi uguali credo che sia tutto qui l' errore
printf("\n");
do
{
do
{
if(v1==v2[j])
{
cont++;
}
j++;
}while(j<lung);
if(cont==0)
{
j=0;
contd++;
do
{
do
{
if(v1==v3[k])
{
cont++;
}
k++;
}while(k<contd);
if(cont==0)
{
v3[j]=v1;
j++;
}
k=0;
i++;
cont=0;
}while(i<lung);
}
cont=0;
i++;
j=0;
}while(i<lung);






//stampa v3
printf("\n\nIl vettore 3 \x8a\ stato caricato con i seguenti numeri: \n");
i=0;
do
{
printf("[%d] ",v3);
i++;
}while(i<lung);




return 0;
}




Vi allego in oltre il main se volete testarlo View attachment main.zip

Grazie per chi mi darà una mano
 
#2
Metodo Bruteforce che mi è venuto in mente(e alle 21:57 direi che va più che bene):
1)Due vettori da confrontare di lunghezza n,m(dove può essere che n=m)
2)Un terzo vettore risultante di lunghezza n+m(il caso peggiore e che non vi siano elementi comuni)
3)Carica i vettori
4)Compara ogni singolo elemento del primo vettore con tutti quelli del secondo. Se arrivi a fine ciclo vuol dire che quell'elemento non esiste nel primo, cerca se è già stato inserito nel vettore 3. In caso di risposta negativa aggiungi.
5)Inverti il primo vettore con il secondo e ripeti il passaggio quattro
6)Stampa il vettore 3
 

Andreino10

Nuovo Utente
53
0
Hardware Utente
CPU
Intel core i5 4460
Scheda Madre
AsRock Pro4 h87
Hard Disk
SSD OCZ ARC 2.5" 120GB ; HDD WD caviar Blue 1TB
RAM
G.Skill Ares 2x 4GB
Scheda Video
AMD Sapphire R9 280 DUAL-X
Alimentatore
Antec NeoEco 520C
Case
Neos Bitfenix Windowed
#3
vettori: v1, v2 , v3.
n1 è lunghezza v1.
n2 è lunghezza v2.

for(int i=0; i<l1;i++)
{
for(int j=0; j<l2;j++)
{
if(v1!=v2[j])
//Controlli con un altro ciclo se v è presente in v3, se non lo è lo inserisci in v3.
}
}

stampi v3.
 
Ultima modifica:

Discussioni Simili


Entra

Guarda il video live di tomshardwareita su www.twitch.tv