#include <stdio.h>
#include <stdlib.h>
long *allocate_numberarray(long len)
{
long i;
long *zahl;
if ((zahl= malloc (len*sizeof(long)!=0)))
{
for (i=0; i<len; i++)
zahl[i]=0;
}
else
{
fprintf(stderr, "Fehler bei Speicherallozierung");
exit(-1);
}
return zahl;
}
void our_free (long *mem)
{
if (mem)
{
free(mem);
mem=0;
}
}
void print (long *mem, long len)
{
long i;
printf("Die Zahl: ");
for (i=(len-1); i>=0; i--)
{
printf("%ld",mem[i]);
}
}
long *read_array (long *mem, long len)
{
long i;
long Wert;
printf("Zahl einlesen:\n");
for (i=0; i<len; i++)
{
printf("%ld. Stellen: ", i+1);
scanf("%ld",&Wert);
getchar();
mem[i]=Wert;
}
return mem;
}
long *change_size (long *mem, long old_size, long new_size)
{
long i;
long *zahl;
if ((zahl= realloc(mem, new_size*sizeof(long)!=0)))
{
if(new_size>old_size)
{
for (i=0; i<new_size; i++)
zahl[i]=0;
}
}
else
{
fprintf(stderr, "Fehler bei der Realallozierung");
exit(-1);
}
return zahl;
}
long add (long *a, long size1, long *b, long size2, long *c, long size3)
{
long i;
for (i=1; i<size1; i++)
{
c[i]=a[i];
}
return c;
}
int main()
{
long *neuezahl1, *neuezahl2;
long laenge1, laenge3;
long laenge1_neu;
long laenge2=3;
laenge3=laenge2;
long *neuezahl3;
printf("1.Zahl: Wie viele stellen?: ");
scanf("%ld",&laenge1);
getchar();
printf("\n");
neuezahl1=allocate_numberarray(laenge1);
neuezahl1=read_array(neuezahl1, laenge1);
print(neuezahl1,laenge1);
printf("\n");
/* printf("Neue Länge eingeben; ");
scanf("%ld", &laenge1_neu);
getchar();
printf("\n");
neuezahl1=change_size(neuezahl1, laenge1, laenge1_neu);
laenge1=laenge1_neu;
neuezahl1=read_array(neuezahl1, laenge1);
print(neuezahl1, laenge1); */
print(neuezahl2,laenge2);
neuezahl2=allocate_numberarray(laenge2);
neuezahl2=read_array(neuezahl2, laenge2);
neuezahl3=allocate_numberarray(laenge3);
print(neuezahl2,laenge2);
neuezahl3= add(neuezahl1, laenge1, neuezahl2, laenge2, neuezahl3, laenge3);
print(neuezahl3, 3);
printf("\n");
our_free(neuezahl1);
our_free(neuezahl2);
our_free(neuezahl3);
return 0;
}