Ciao ragazzi, l'esercizio su cui vorrei un aiuto e' analogo a quello del precedente post.
Ho un vettore A di n elementi, devo inserire nel vettore B --> ogni numero che compare ripetuto nel primo vettore, deve comparire una sola volta nel secondo.
Esempio:
A = [1 ,2, 3, 4, 1, 2] B = [ 3, 4, 1, 2]
#include <stdio.h>
#define size 100
int array (int a[]) {
int i;
int n = 0;
printf("Inserisci i valori del tuo array, -1 per fermarti:\n");
for ( i = 0; i <= size-1; i++)
{
scanf ("%d",& a[i]);
n++;
if (a[i]==-1)
{
n--;
break;
}
}
return n;
}
void stampa ( int a[], int n) {
int i;
for ( i = 0; i<=n-1; i++)
{
printf ("Posizione: %d, Valore: %d\n", i, a[i]);
}
}
int confronto ( int a[], int b[], int n) {
int i = 0;
int j = 0;
int k = 0;
int w = 0;
int trovato = 0;
while ( i < n)
{
while ( k < n && trovato == 0)
{
if (a[i]!=a[k+1])
{
b[j] = a[i];
j++;
w++;
trovato = 1;
}
else k++;
}
k = 0;
trovato = 0;
i++;
}
return w;
}
int main () {
int A[size];
int B[size];
int N = 0;
int M = 0;
int W = 0;
N = array(A);
stampa (A, N);
printf("Nuovo vettore:\n");
W = confronto(A, B, N);
stampa(B, W);
return 0;
}
Mi stampa tutti i valori copiati del vettore A senza nessuna modifica Il problema penso sia nell' if della funzione confronto, se qualcuno sa darmi una mano ve ne sarei grato.
Sto da un bel po' a capire cosa sbaglio, percio' sto chiedendo a voi
Vi ringrazio in anticipo!!