@Seth: Tutaj masz jakiś tam kodzik. W argumentach podaje się wielkość zbiorów a potem podaje liczby po koleji

. Może nie jest to jakaś wielka sztuka, ale raczej nieźle działa ( chociaż można go "oszukać" ) i osobiście nie znalazłem żadnych poważnych błędów.
Kod
#include<stdio.h>
#define BUFSIZE 64
int main(int argc, char **argv)
{
int *a, *b, a_sum=0, b_sum=0, a_size=0, b_size=0, i, ac=0, bc=0;
char buf[BUFSIZE];
if(argc!=3)
{
printf("%s <a_size> <b_size>n", *argv);
return 1;
}
a_size=atoi(*(++argv));
b_size=atoi(*(++argv));
a=(int *)malloc(a_size*sizeof(int)+sizeof(int));
b=(int *)malloc(b_size*sizeof(int)+sizeof(int));
if(!a || !b)
{
printf("Out of memoryn");
return 1;
}
printf("Rozpoczynanie programu dla a_size=%i oraz b_size=%in", a_size, b_size);
memset(a, 0, a_size*sizeof(int)+sizeof(int));
memset(b, 0, b_size*sizeof(int)+sizeof(int));
while(a_size--)
{
printf("a_size=%in", a_size);
printf("Podaj liczbe do zbioru a: ");
i=0;
while((i-1)<BUFSIZE)
{
if((buf[i]=getchar())=='n')
{
buf[i]='0';
break;
}
i++;
}
*(a)=atoi(buf);
a_sum+=*(a);
printf("Pobrano liczbę %in", *(a));
a++;
ac++;
}
printf("Suma a=%in", a_sum);
while(b_size--)
{
printf("b_size=%in", b_size);
printf("Podaj liczbe do zbioru b: ");
i=0;
while((i-1)<BUFSIZE)
{
if((buf[i]=getchar())=='n')
{
buf[i]='0';
break;
}
i++;
}
*(b)=atoi(buf);
b_sum+=*(b);
printf("Pobrano liczbę %in", *(b));
b++;
bc++;
}
printf("Suma b=%in", b_sum);
printf("ac=%i, bc=%in", ac, bc);
printf("Różnica zbiorów a {");
while(ac--)
printf("%i,", *(--a));
printf("b} oraz b {");
while(bc--)
printf("%i,", *(--b));
printf("b} = %in", (a_sum-b_sum));
free(a);
free(b);
return 0;
}