Code:
#include <stdio.h>
#include <stdlib.h>
void clearInput();
long *allocate_numberarray(long len);
void our_free(long *mem);
void print(long *mem, long len);
void einlesen(long *mem, long len);
long *change_size(long *mem, long old_size, long new_size);
long append (long *mem1, long size1, long *mem2, long size2, long
*mem3, long size3);
int main(int argc, char *argv[])
{
long *test;
long *testneu;
long *wert1;
long *wert2;
long *wert3;
long anzahl,anzahlneu,anzahl1,anzahl2,anzahl3,a;
printf("Geben Sie eine Anzahl ein: ");
scanf("%ld",&anzahl);
clearInput();
test=allocate_numberarray(anzahl);
einlesen(test, anzahl);
printf("\n\nWerte ausgeben\n\n");
print(test,anzahl);
printf("\nGeben Sie eine neue Anzahl ein: ");
scanf("%ld",&anzahlneu);
clearInput();
testneu=change_size(test, anzahl, anzahlneu);
einlesen(testneu,anzahlneu);
printf("\n\nNeue Werte ausgeben\n\n");
print(testneu,anzahlneu);
our_free(test);
our_free(testneu);
printf("\n\n");
printf("Geben Sie eine Anzahl1 ein: ");
scanf("%ld",&anzahl1);
clearInput();
wert1=allocate_numberarray(anzahl1);
einlesen(wert1,anzahl1);
printf("\n\nWerte1 ausgeben\n\n");
print(wert1,anzahl1);
printf("\nGeben Sie eine Anzahl2 ein: ");
scanf("%ld",&anzahl2);
clearInput();
wert2=allocate_numberarray(anzahl2);
einlesen(wert2,anzahl2);
printf("\n\nWerte2 ausgeben\n\n");
print(wert2,anzahl2);
anzahl3=anzahl1+anzahl2;
wert3=allocate_numberarray(anzahl3);
a=append (wert1,anzahl1,wert2,anzahl2,wert3,anzahl3);
if(a==0)
{
fprintf(stderr,"+++ Fehler +++\n");
our_free(wert1);
our_free(wert2);
our_free(wert3);
exit(-1);
}
else
{
printf("\n\nWerte3 ausgeben\n\n");
print(wert3,anzahl3);
printf("\n\n");
}
our_free(wert1);
our_free(wert2);
our_free(wert3);
printf("Press ENTER to continue...\n");
getchar();
return 0;
}
void clearInput()
{
while(getchar() != '\n');
}
long *allocate_numberarray(long len)
{
long *ptr;
ptr=calloc(len,(sizeof(long)));
if(ptr==0)
{
fprintf(stderr,"+++ Fehler +++\n");
exit(-1);
}
return ptr;
}
void our_free(long *mem)
{
if(mem)
{
free(mem);
mem=0;
}
}
void print(long *mem, long len)
{
long i;
for(i=len-1;i>=0;i--)
printf("%ld. Zahl = %ld\n",i+1,mem[i]);
printf("\n");
}
void einlesen(long *mem, long len)
{
long i;
printf("\nGeben Sie %ld Werte ein:\n\n",len);
for(i=0;i<len;i++)
{
printf("%ld. Wert: ",i+1);
scanf("%ld",&mem[i]);
clearInput();
if((mem[i]<(-9))||(mem[i]>9))
{
fprintf(stderr,"+++ Fehler +++\n");
exit(-1);
}
}
}
long *change_size(long *mem, long old_size, long new_size)
{
long *memnew;
memnew=realloc(mem,new_size*sizeof(long));
if(memnew==0)
{
fprintf(stderr,"+++ Fehler +++\n");
exit(-1);
}
mem=0;
return memnew;
}
long append (long *mem1, long size1, long *mem2, long size2, long
*mem3, long size3)
{
long i;
if((size1>size3)||(size2>size3))
{
fprintf(stderr,"+++ Fehler +++\n");
return 0;
}
for(i=0;i<size1;i++)
mem3[i]=mem1[i];
for(i=0;i<size2;i++)
mem3[size1+i]=mem2[i];
return 1;
}
thx in advance