Buongiorno a tutti,
sto svolgendo un esercizio il quale mi chiede, mediante il linguaggio C, di scrivere una funzione che, dati due insiemi A e B di numeri naturali, mi calcoli l'insieme C differenza dei due.
Quanto sono riuscito a fare è il seguente listato:
Questo listato però non funziona perché con gli insiemi di esempio mi trova solo l'insieme differenza {1,2} mentre dovrebbe essere {1,2,6,7}.
Qualcuno mi può dare una dritta su come risolvere?
Grazie.
sto svolgendo un esercizio il quale mi chiede, mediante il linguaggio C, di scrivere una funzione che, dati due insiemi A e B di numeri naturali, mi calcoli l'insieme C differenza dei due.
Quanto sono riuscito a fare è il seguente listato:
C:
#include <stdio.h>
int differenza(int u[], int n, int v[], int m, int z[]);
int main(void) {
int A[] = {1, 2, 3, 4, 5}, B[] = {3, 4, 5, 6, 7}, C[5];
int na = 5, nb = 5, nc, i;
nc = differenza(A, na, B, nb, C);
printf("\nLa differenza dei due insiemi è:\n");
for(i = 0; i < nc; i++) {
printf("%d ", C[i]);
}
printf("\n");
return(0);
}
int differenza(int u[], int n, int v[], int m, int z[]) {
int i, j, ok, d = 0;
for(i = 0; i < n; i++) {
ok = 1;
for(j = 0; j < m && ok == 1; j++) {
if(u[i] == v[j]) {
ok = 0;
}
}
if(ok == 1) {
z[d++] = u[i];
}
}
return(d);
}
Qualcuno mi può dare una dritta su come risolvere?
Grazie.