Witam! Muszę napisać program, w którym użytkownik do dwóch tablic wprowadza liczby. Zbiory te następnie muszą być posortowane. Następnie posortowane zbiory muszą być scalone w jeden ułożone w kolejności bez używania sortowania (stosując zasadę jeśli element Zb1 większy od elementu Zb2 to zapisuje element z tego pierwszego, gdy inaczej, to element z tego drugiego. Napisałem, jednak nie wiem czemu program nie działa poprawnie, proszę o pomoc.
#include
#include
void babel(int table[30], int size);
int main()
{
int a,b,k=0,p,d,x=0,z=0,temp,i;
int *memory1, *memory2, *memory3;
printf("Podaj ile elementow ma pierwszy zbior?\n");
scanf("%d", &a);
printf ("\n");
memory1=(int*)calloc(a,sizeof(int));
if(memory1==NULL)
exit(1);
printf("Podaj ile elementow ma drugi zbior?\n");
scanf("%d", &b);
printf ("\n");
memory2=(int*)calloc(b,sizeof(int));
if(memory2==NULL)
exit(1);
for( p=0; p
{
printf("Podaj %d element pierwszego zbioru \n", p+1);
scanf("%d", &memory1[p]);
printf ("\n");
}
for( d=0; d
{
printf("Podaj %d element drugiego zbioru \n", d+1);
scanf("%d", &memory2[d]);
printf ("\n");
}
memory3=(int*)calloc(a+b,sizeof(int));
if(memory3==NULL)
exit(1);
babel(memory1,a);
babel(memory2,b);
do
{
if (memory1[x] < memory2[z] || memory1[x] == memory2[z])
{
temp=memory1[x];
x++;
}
else
{
temp=memory2[z];
z++;
}
memory3[k]=temp;
k++;
}
while(k
babel(memory3,a+b);
printf("Tak wyglada zbior 1: \n");
for( p=0; p
{
printf("%d \t", memory1[p]);
}
printf("\n Tak wyglada zbior 1: \n");
for( d=0; d
{
printf("%d \t", memory2[d]);
}
printf("\n Tak wyglada zbior scalony: \n");
for( i=0; i
{
printf("%d \t", memory3[i]);
}
free(memory1);
free(memory2);
free(memory3);
system("PAUSE");
return 0;
}
void babel(int table[30], int size)
{
int i, j, temp;
for (i = 0; i
for (j=0; j
{
if (table[j] > table[j+1])
{
temp = table[j+1];
table[j+1] = table[j];
table[j] = temp;
}
}
}
[/code]
Problem polega na tym, że sortuje ok, tylko pokazuje zły element numer jeden, nie wiem dlaczego