Devo fare una funzione che dia come ritorno un array, dati in input 2 array e la loro dimensione. Questa funzione deve inserire nel terzo array(quello in ritorno) i valori alternati dei primi 2 array e inserire nell'ultimo posto la somma di tutti gli elementi di questo array.
Per spiegarmi meglio, questo terzo array dovrebbe essere composto nel modo seguente: {v1_1, v2_1, v1_2, v2_2,....,v1_n,v2_n, (v1_1+v2_1+v1_2+v2_2+...+v1_n+v2_n)}. Dove v1_k e v2_k sono gli elementi k-esimi del primo vettore e del secondo.
Vi faccio vedere come ho fatto:
codice:
int* alterna(int *vett1, int *vett2, int n)
{
int* vett3;
int i=0;
int s=0;
vett3=malloc(MAX*sizeof(int));
for(i=0;i<2*n;i++)
{
*vett3=*(vett1+i); //l'i-esimo elemento di vett1 viene assegnato al primo elemento di vett3
vett3++;
vett3++;
}
for(i=0;i<2*n;i++)
{
vett3++;
*vett3=*(vett2+i);
vett3++;
}
for(i=0;i<2*n;i++)
{
s+=vett3[i];
}
vett3[2*n+1]=s;
return vett3;
}
mentre il file main è così:
codice:
#include <stdio.h>
#include "logic.h"
#include <malloc.h>
#define MAX 50
int main()
{
int vett1[MAX];
int vett2[MAX];
int* vett3=NULL;
int n, i;
printf("Inserire la dimensione degli array\n");
scanf("%d", &n);
vett3=malloc((2*n)+1*sizeof(int));
printf("Digitare gli elementi del primo array\n");
for(i=0;i<n;i++)
scanf("%d", &vett1[i]);
printf("Digitare gli elementi del secondo array\n");
for(i=0;i<n;i++)
scanf("%d", &vett2[i]);
vett3=alterna(vett1, vett2, n);
for(i=0;i<(2*n)+1;i++)
printf("%d ", vett3[i]);
printf("\n");
return 0;
}
Il programma si compila, ma alla fine viene stampato un array che è composto solo da 0, e non riesco a capire dove ho sbagliato. Qualcuno mi può aiutare?