Matteo Maddalena ha scritto:
Ho un problema con un programma in C;
Il programma dice: inserire un valore intero N, per poi inserire un valore intero N volte e visualizare i valori inseriti al contrario;
Ho scritto il codice ma il programma crasha subito;
Qui sotto metto il codice
[CODE]
#include<stdio.h>
int main()
{
int n , a[n], i = n;
scanf("Inserisci il totale di numeri che vuoi inserire:%d", &n);
n++;
for(i = 0;i < n; i++)
{
scanf("Inserisci il %d° numero:%d", i , a[i]);
}
i = n;
for(i = n--;i > 0; i--)
{
printf("%d\n", a[i]);
}
return 0;
}
Spero mi possiate aiutare grazie!!
Ci sono errori (anche molto gravi) nell'uso delle funzioni scanf e printf... noto una grandissima confusione e ti consiglio VIVAMENTE di ripassarle...
Comunque... il codice corretto te lo lascio qui sotto, ho inserito dei commenti in modo che tu possa capire gli errori commessi:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n , i;
int*a;/*per questo esercizio meglio usare un array dinamico in modo da non avere limitazioni di lettura*/
printf("Inserisci il totale di numeri che vuoi inserire:");/*si usa la printf per effettuare prompt a schermo e non scanf che serve solo per la lettura delle variabili*/
scanf("%d",&n);/*si legge la variabile con l'operatore di indirizzo che precede il nome della variabile, l'operatore è &*/
a=malloc(n*sizeof(int));/*allocazione array dinamico*/
for(i = 0;i < n; i++)
{
printf("\nInserire il numero (%d):",i);
scanf("%d" ,&a[i]);/*idem prima prompt e poi lettura con operatore di indirizzo*/
}
for(i = n-1 ;i>=0; i--)
printf("\n%d", a[i]);
return 0;
}
PS. Ho usato l'array dinamico, poichè facendo una dichiarazione top level di array statico come: a[n], possono verificarsi errori di lettura all'interno del for.