Ciao a tutti! Avrei bisogno di una mano per risolvere una funzione. In questa funzione devo inserire due insiemi A1 e A2 (utilizzando puntatori, non sapendo la grandezza del vettore che verrà richiesta ed inserita dall'utente) e restituire la loro intersezione(A:1, 2 - B: 1, 2, 3 -= C: 1, 2) creando appunto un nuovo puntatore C. La funzione però deve essere ricorsiva, questo mi mette molto in difficoltà non avendo ben capito questo argomento..
Questo è il codice della funzione che ho scritto:
La parte relativa all'inserimento degli insiemi funziona ed è apposto.
Questo codice mi fa ritornare come risultato:
Inserisci il numero di elementi del primo insieme: 2
Inserisci elemento: 1
Inserisci elemento: 2
Inserisci il numero di elementi dell'insieme che vuoi inserire: 3
Inserisci elemento: 1
Inserisci elemento: 2
Inserisci elemento: 5
L'intersezione dei due insiemi è: 0 0
void intersezione (double a1[], double a2[], int n1, int n2, int count, int i, int j)
{
double *c;
c = (int *) malloc (n1 + n2 * sizeof(int));
count=0;
if (n2 >= n1)
{
if (a1[i] == a2[j])
{
c[count] = a1[i];
count++;
i++;
j++;
}
else
{
intersezione (a1, a2, n1, n2, count, i , j++);
}
}
else
{
/*questo pezzo di codice mi fa tornare come risultato "errore di segmentazione", non l'ho ancora guardato bene non sapendo risolvere il problema superiore*/
if (a2[j] == a1[i])
{
c[count] = a2[j];
count++;
i++;
j++;
intersezione (a1, a2, n1, n2, count, i , j);
}
else
{
i++;
intersezione (a1, a2, n1, n2, count, i , j);
}
}
printf("L'intersezione dei due insiemi è: ");
for(i = 0; (i <= (count )); i++)
{
printf("%d ",c[count] );
}
}
Grazie.
P.S. sono ancora alle prime armi, probabilmente ho sbagliato la maggior parte del codice.