codice:
#include <stdio.h>
#include <stdlib.h>
void pulisciBuffer() {
while(getchar() != '\n');
}
int main()
{
int *vet1, *vet2, *somv;
int n, k;
do {
printf("Selezionare la lunghezza n dei due vettori: ");
scanf("%d", &n);
pulisciBuffer();
} while(n < 1);
vet1 = (int *)calloc(n, sizeof(int));
vet2 = (int *)calloc(n, sizeof(int));
sumv = (int *)calloc(n, sizeof(int));
printf("Inizializzazione primo vettore.\n");
for(k = 0; k < n; k++) {
printf("Inserisci un valore: ");
scanf("%d", &vet1[k]);
pulisciBuffer();
}
printf("Inizializzazione secondo vettore.\n");
for(k = 0; k < n; k++) {
printf("Inserisci un valore: ");
scanf("%d", &vet2[k]);
pulisciBuffer();
}
for(k = 0; k < n; k++)
somv[k] = vet1[k] + vet2[k];
printf("Visualizzazione primo vettore.\n\n");
for(k = 0; k < n; k++)
printf(" %5d ", vet1[k]);
printf("\n\nVisualizzazione secondo vettore.\n\n");
for(k = 0; k < n; k++)
printf(" %5d ", vet2[k]);
printf("\n\nVisualizzazione vettore somma.\n\n");
for(k = 0; k < n; k++)
printf(" %5d ", somv[k]);
free(vet1);
free(vet2);
free(somv);
getchar();
return 0;
}
Questo codice è corretto.
Nel tuo codice:
codice:
int vet1[n], vet2[n];
int somv[n];
Inizializzi i vettori senza settare il valore di n, ciò porta a risultati imprevisti! Inoltre dovresti sostituire la dichiarazione di array di lunghezza variabile con l'allocazione dinamica (es. malloc, calloc e free; vedi il codice postato per un esempio).
P.s. io, dopo ogni chiamata a scanf, ho introdotto una funzione che pulisce il buffer, questo perchè scanf non lo fa di default, non è strettamente necessaria, ma siccome tu utilizzavi una scanf un po' ambigua per non uscire dal programma ho sostituito con una getchar, da ciò è risultata la necessità di tenere pulito il buffer
Edit: non ho compilato perchè non ho un compilatore a disposizione, perciò potrebbe esserci qualche errore
Edit2: C'era un errore... Colpa del fatto che ho modificato il codice e non l'ho riscritto