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:
mentre il file main è così: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; }
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?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; }

Rispondi quotando
riguardando di nuovo il codice ho poi notato altre ingenuità che prima non avevo visto (come il fatto di assegnare il valore della somma all'elemento 2n+1, piuttosto che a quello 2n)
