#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;
}
