Salve, sono alle prime armi con il C. Ho pensato di creare un piccolo menù, sfruttando lo "swtich/case"con il quale posso raggruppare più funzioni ( in un secondo momento, credo che esporterò tutte le funzioni dalla main ad una libreria, così da avere un main più ordinato e magari riutilizzare le funzioni; per il momento è tutto nel main .) Lascio qui sotto il codice
/* dichiarazione lib utilizzate */
#include <stdio.h>
/*#include "mylib.h" ---> temporaneamente disabilitata per controllo main */
/* ================================================== */
int main ()
{
char i; /* variabili locale utilizzata in fase di selezione (switch) */
/*qui inserirò un printf con tutte le funzioni possibili, attualmente chiamo le funzioni 1,2,3,4,5*/
i = getchar (); /*prendiamo in input la selezione */
switch(i) /*inizializzazione switch, utilizziamo la variabile "i" come selezione dei vari case */
{
/*===========================================================*/
case'1':
/* dichiarazione var locali e strutture varie*/
int d /*dimensione dell'array */
printf("Quanti numeri in input vuoi inserire?");
scanf("%lf", &d); /*prendiamo in input la dimensione dell'array */
int array[d]; /*eseguo la dichiarazione dell'array dopo aver preso in input d, così posso allocare "dinamicamente" in base alle esigenze la dimensione" */
int i; /*variabile utilizzata per la for*/
/*fine dichiarazione var */
/*inizio caricamento array*/
for (i=0; i<10; i++)
{
printf("Inserisci un numero :\n");
scanf("%d", &array[i]);
}
/* fine caricamento array */
/*stampo a video i valori dell'array */
printf("Questo e' il risultato: ");
for (i=0; i<10; i++)
{
printf("%f\n", &array[i]);
}
break;
/*===========================================================*/
case'2':
printf("seconda funzione\n");
break;
/*===========================================================*/
case'3':
printf("terza funzione\n");
break;
/*===========================================================*/
case'4':
printf("quarta funzione\n");
break;
/*===========================================================*/
case'5':
printf("quinta funzione\n");
break;
/*===========================================================*/
default:
printf("la scelta non e' valida, riavvia il programma\n");
}
return 0;
}
Come su detto, eseguo la dichiarazione dell'array dopo aver preso in input d, così posso allocare "dinamicamente" in base alle esigenze la dimensione dell'array. Eseguo il caricamento dell'array e successivamente lo stampo a video, ma qualcosa dev'essere andato storto, perchè il compilatore da errori. Qualcuno sa dove ho sbagliato? Di seguito inserisco il report del gcc (compilatore)
GCC REPORT [ANSI C]:
main.c: In function ‘main’:
main.c:24:2: error: a label can only be part of a statement and a declaration is not a statement
int d
^~~
main.c:25:2: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘printf’
printf("Quanti numeri in input vuoi inserire?");
^~~~~~
main.c:27:6: error: ‘d’ undeclared (first use in this function)
&d);
^
main.c:27:6: note: each undeclared identifier is reported only once for each function it appears in
main.c:28:6: warning: unused variable ‘array’ [-Wunused-variable]
int array[d];
^~~~~