Mam do napisania program na zaliczenie ktory wykonuj operacje na zbiorach, jedna z tych operacji jest obliczenie iloczynu kartezjanskiego. I wlasnie ona jest glownym problemem :/ Podczas jej wyswietlania program sie wywala.
Program jest dosc dlugi (jak dla mnie :P ) wiec wrzuce tylko to co mam wrazenie ze powoduje blad, jak cos to moge wrzucic calosc.
A wiec:
int *iloczyn_kartezjanski(int *zbior_a, int *zbior_b) {
int i, j;
int *zbior;
zbior[0]=0;
zbior = (int *)malloc(1*sizeof(int));
for(i=1;i<=zbior_a[0];i++) {
for(j=1;j<=zbior_b[0];j++) {
zbior[0]++;
zbior = (int *)realloc(zbior,(zbior[0]+1)*sizeof(int));
zbior[zbior[0]]=zbior_a[i];
zbior[0]++;
zbior = (int *)realloc(zbior,(zbior[0]+1)*sizeof(int));
zbior[zbior[0]]=zbior_b[j];
}
}
return zbior;
}
int *zbior;
int i;
zbior = iloczyn_kartezjanski(zbior_a, zbior_b);
for(i=1;i<zbior[0];i=i+2) {
printf("(%d, %d), ", zbior[i], zbior[i+1]);
}
free(zbior);
Program wywala sie tylko wtedy gdy w drugiej czesci kodu jest printf().
Pierwszym elementem tablicy zbior jest liczba elementow zbioru, a nastepne liczby to elementy tego zbioru.
Mam nadzieje ze ktos rozkmini czemu mi to nie dziala bo ja juz nie mam do tego sily :P