Ho un problema con il seguente programma.La traccia è questa:
Scrivere un programma che data una sequenza di interi la stampi al contrario, allocando la memoria necessaria
in modo dinamico attraverso l’uso della funzione malloc.
L’input è dato da un intero n e da una sequenza di n numeri; basta una sola chiamata di malloc per allocare un vettore di dimensione n.
Ho provato a risolverlo in questo modo ma mi stampa valori a caso.Penso che l'errore sia nell'ultimo ciclo for ma ,nonostante le modifiche,continua
a non funzionare.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n,*a; //Indice per il ciclo,numero di elementi,puntatore usato come array
printf("\nInserisci il numero di elementi della sequenza: ");
scanf("%d",&n);
a=(int *) malloc(n *sizeof(int)); //alloco dinamicamente il vettore
if(a==NULL){ //controllo
printf("\nAllocazione fallita\n");
exit(EXIT_FAILURE);
}
printf("\nInserisci %d caratteri numerici: ",n
);
for(i=0; i<n; i++){ //Inserisco uno alla volta i caratteri
printf("\nInserisci il prossimo carattere: ");
scanf("%d",&a[i]);
}
printf("\nIl vettore stampato in ordine inverso e': \n"); //Ciclo per stampare il vettore inverso
for(i=n; i>0; i--){
printf("%d",a[i]);
}
free(a); //Libero la memoria allocata
return 0;
}