Intendevo , di creare delle funzioni per inserirgli dentro il codice e richiamarle dallo switch





Faccio un esempio con variabili globali per non dover modificare molto il codice già scritto



codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* FUORI DAL MAIN LE VARIABILI SONO GLOBALI ACCESSIBILI DA OGNI FUNZIONE*/
long int ore,minuti,secondi,min,km,intpartMI,intpart0I,intpartSI;
    long int giorno,mese,anno;
    float kilometri,km_totali,metrisecondo;
    long int kilometriinmetri;
    long int tempoinsecondi;
    long int tempoinminuti;
    float metrialsecondo;
    float minutialkilometro;
    float tempris;
    double fractpart,intpart;
    long int minuti1,secondi1,secondim;
	char scelta1;
	char scelta2;
	char scelta3;
	int scelta;
	long int cu;
	unsigned calorie,calorie_totali;
	long int oretot,minutitot,seconditot,sommasecondi;
    double fractpartO,intpartO,fractpartM,intpartM,orepart,minutipart,secondipart,fractpartS,intpartS;

main()
{


esempio di switch con chiamate ad altre funzioni


QUESTO

codice:

scelta==1;
    printf("\nHai scelto di registrare un nuovo allenamento\n\n");

    nuovidati:           /* INSERIMENTO DATI E CONTROLLI SU DATA*/

    printf("Inserisci data nel formato DD-MM-YYYY:\n\n");
    scanf("%d-%d-%d",&giorno,&mese,&anno);
    if(giorno>31)
    {
       printf("Hai inserito una data non corretta idiota.!\n\n");
       goto nuovidati;
    }
   else if(mese>12)
   {
       printf("Hai inserito una data non corretta idiota.!\n\n");
       goto nuovidati;
   }
   else if(giorno<0)
   {
       printf("Hai inserito una data non corretta idiota.!\n\n");
       goto nuovidati;
   }
   else if(mese<0)
   {
       printf("Hai inserito una data non corretta idiota.!\n\n");
       goto nuovidati;
   }

   printf("\nInserisci km separati da un punto : \n\n");
   scanf("%f",&kilometri);
   printf("\nInserisci il tempo nel formato HH:MM:SS : \n\n");
   scanf("%d:%d:%d",&ore,&minuti,&secondi);
   printf("\nInserisci calorie bruciate:\n\n");
   scanf("%d",&cu);

	printf("\nHai inserito i seguenti dati:\n\n");                /* VERIFICA DATI INSERITI*/
    printf("Data allenamento: %0.2d-%0.2d-%d\n",giorno,mese,anno);
    printf("Kilometri ultima sessione: %.2f km\n",kilometri);
    printf("Tempo impiegato nell'ultima sessione: %0.2d:%0.2d:%0.2d\n",ore,minuti,secondi);
    printf("Calorie bruciate ultima sessione: %d \n\n",cu);
    printf("I dati inseriti sono corretti?\n");
    printf("Digita y se si, n se no\n");

    scelta1=getchar();
    scanf("%cn",&scelta1);


	if(scelta1=='y')                               /* CALCOLO VELOCITà E COSE VARIE*/
    {
       printf("\nBene, procediamo!!\t\n\n\n");
       kilometriinmetri=(kilometri*1000);
       printf("\nMetri percorsi: %d\n\n",kilometriinmetri);
       tempoinsecondi=(ore*3600)+(minuti*60)+secondi;
       printf("Tempo in secondi : %d\n\n",tempoinsecondi);
       tempoinminuti=(ore*60)+minuti;
       printf("Tempo in minuti e secondi : %0.2d:%0.2d\n\n",tempoinminuti,secondi);
       metrialsecondo=((float)kilometriinmetri/tempoinsecondi);
       printf("Metri al secondo : %.3f\n\n",metrialsecondo);
       tempris=((float)tempoinsecondi)/60;
       minutialkilometro=tempris/kilometri;
       fractpart=modf(minutialkilometro,&intpart);
       minuti1=((int)intpart);
       secondim=(fractpart*60);
       secondi1=((int)secondim);
       printf("Minuti al kilometro: %0.2d:%0.2d\n\n",minuti1,secondi1);

   /* SCRITTURA ULTIMO RECORD SU FILE*/

      printf("Inizio a scrivere su file...\n\n");
      fprintf(fp,"Data             : %0.2d-%0.2d-%d\n",giorno,mese,anno);
      fprintf(fp,"Kilometri        : %.2f\n",kilometri);
      fprintf(fp,"Tempo            : %0.2d:%0.2d:%0.2d\n",ore,minuti,secondi);
      fprintf(fp,"Calorie          : %d \n",cu);
      fprintf(fp,"Metri/Secondo    : %.3f\n",metrialsecondo);
      fprintf(fp,"Minuti/Kilometro : %0.2d:%0.2d\n\n",minuti1,secondi1);
      fflush(fp);
      fclose(fp);
      printf("Fatto!!\n\n\n\n");

/* FINE SCRITTURA */

/*Visualizzare precedenti*/

   printf("\n\nVuoi inserire un altro record?\n\n");
   printf("Digita y se si', n se no\n");
   scelta3=getchar();
   scanf("%cn",&scelta3);
   if(scelta3=='y')
   {
      goto nuovidati;
   }
   else
   {
   printf("\n\nVuoi visualizzare le statistiche precedenti?\n\n");
   printf("Digita y se si', n se no\n");
   scelta2=getchar();
   scanf("%cn",&scelta2);
   if(scelta2=='y')
   goto visualizzazione;
   else
   return 0;
}
}


	else if(scelta1=='n')
    {
        printf("E sei un pirla allora\n");
        printf("Riproviamo:\n\n");
        goto nuovidati;
    }
    break;

DIVENTEREBBE


codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* FUORI DAL MAIN LE VARIABILI SONO GLOBALI ACCESSIBILI DA OGNI FUNZIONE*/
    long int ore,minuti,secondi,min,km,intpartMI,intpart0I,intpartSI;
    long int giorno,mese,anno;
    float kilometri,km_totali,metrisecondo;
    long int kilometriinmetri;
    long int tempoinsecondi;
    long int tempoinminuti;
    float metrialsecondo;
    float minutialkilometro;
    float tempris;
    double fractpart,intpart;
    long int minuti1,secondi1,secondim;
	char scelta1;
	char scelta2;
	char scelta3;
	int scelta;
	long int cu;
	unsigned calorie,calorie_totali;
	long int oretot,minutitot,seconditot,sommasecondi;
    double fractpartO,intpartO,fractpartM,intpartM,orepart,minutipart,secondipart,fractpartS,intpartS;
void Registra_allenamento();
void visuallizza();
main()
{

    


    

printf("Benvenuto nel programma allenamenti v. 0.1\n\n");

printf("Scegli cosa fare:\n\n");
printf("1) Registra nuovo allenamento\n\n");
printf("2) Visualizzare statistiche precedenti\n\n");
scanf("%d",&scelta);

switch(scelta)
{
    case 1:
         Registra_allenamento();
         break;
    case 2:
          visualizza();
          break;




}




}// END MAIN


    //PRIMA FUZIONE PER SCRIVERE SU FILE 
    void Registra_allenamento()
{
    short x=0;
    inizio:
    scelta=1;
    FILE *fp;
    fp=fopen("database.txt","a+");
    if(fp==NULL)
    {
        printf("Impossibile aprire/creare il file.\n\n\n");
        exit(1);
    }
    
    do
    {
            printf("\nHai scelto di registrare un nuovo allenamento\n\n");
        
            nuovidati:           /* INSERIMENTO DATI E CONTROLLI SU DATA*/
        
            printf("Inserisci data nel formato DD-MM-YYYY:\n\n");
            scanf("%d-%d-%d",&giorno,&mese,&anno);
            if((giorno>31)||(mese>12)||(giorno<0)||(mese<0))
            {
                   printf("Hai inserito una data non corretta idiota.!\n\n");
             }
             else 
                 x=1;
    }  while(x==0);  
   printf("\nInserisci km separati da un punto : \n\n");
   scanf("%f",&kilometri);
   printf("\nInserisci il tempo nel formato HH:MM:SS : \n\n");
   scanf("%d:%d:%d",&ore,&minuti,&secondi);
   printf("\nInserisci calorie bruciate:\n\n");
   scanf("%d",&cu);

	printf("\nHai inserito i seguenti dati:\n\n");                /* VERIFICA DATI INSERITI*/
    printf("Data allenamento: %0.2d-%0.2d-%d\n",giorno,mese,anno);
    printf("Kilometri ultima sessione: %.2f km\n",kilometri);
    printf("Tempo impiegato nell'ultima sessione: %0.2d:%0.2d:%0.2d\n",ore,minuti,secondi);
    printf("Calorie bruciate ultima sessione: %d \n\n",cu);
    printf("I dati inseriti sono corretti?\n");
    printf("Digita y se si, n se no\n");

    scelta1=getchar();
    scanf("%cn",&scelta1);


	if(scelta1=='y')                               /* CALCOLO VELOCITà E COSE VARIE*/
    {
				   printf("\nBene, procediamo!!\t\n\n\n");
				   kilometriinmetri=(kilometri*1000);
				   printf("\nMetri percorsi: %d\n\n",kilometriinmetri);
				   tempoinsecondi=(ore*3600)+(minuti*60)+secondi;
				   printf("Tempo in secondi : %d\n\n",tempoinsecondi);
				   tempoinminuti=(ore*60)+minuti;
				   printf("Tempo in minuti e secondi : %0.2d:%0.2d\n\n",tempoinminuti,secondi);
				   metrialsecondo=((float)kilometriinmetri/tempoinsecondi);
				   printf("Metri al secondo : %.3f\n\n",metrialsecondo);
				   tempris=((float)tempoinsecondi)/60;
				   minutialkilometro=tempris/kilometri;
				   fractpart=modf(minutialkilometro,&intpart);
				   minuti1=((int)intpart);
				   secondim=(fractpart*60);
				   secondi1=((int)secondim);
				   printf("Minuti al kilometro: %0.2d:%0.2d\n\n",minuti1,secondi1);

			   /* SCRITTURA ULTIMO RECORD SU FILE*/

				  printf("Inizio a scrivere su file...\n\n");
				  fprintf(fp,"Data             : %0.2d-%0.2d-%d\n",giorno,mese,anno);
				  fprintf(fp,"Kilometri        : %.2f\n",kilometri);
				  fprintf(fp,"Tempo            : %0.2d:%0.2d:%0.2d\n",ore,minuti,secondi);
				  fprintf(fp,"Calorie          : %d \n",cu);
				  fprintf(fp,"Metri/Secondo    : %.3f\n",metrialsecondo);
				  fprintf(fp,"Minuti/Kilometro : %0.2d:%0.2d\n\n",minuti1,secondi1);
				  fflush(fp);
				  fclose(fp);
				  printf("Fatto!!\n\n\n\n");

			/* FINE SCRITTURA */

			/*Visualizzare precedenti*/

			   printf("\n\nVuoi inserire un altro record?\n\n");
			   printf("Digita y se si', n se no\n");
			   scelta3=getchar();
			   scanf("%cn",&scelta3);
			   if(scelta3=='y')
			   {
				  goto inizio;
			   }
			   else
			   {
					   printf("\n\nVuoi visualizzare le statistiche precedenti?\n\n");
					   printf("Digita y se si', n se no\n");
					   scelta2=getchar();
					   scanf("%cn",&scelta2);
					   if(scelta2=='y')
							  visualizza();
             }    							  
					  
}


	else if(scelta1=='n')
    {
        printf("E sei un pirla allora\n");
        printf("Riproviamo:\n\n");
        goto inizio;
    }
   

    
    
    
    
    }
    
    //SECONDA FUNZIONE PER LEGGERE DA FILE 
    void visualizza()
    {
        
        scelta=2;
    printf("\nHai scelto di visualizzare le statistiche precedenti\n");

   FILE *fp;
   fp=fopen("database.txt","r");
     if(fp==NULL)
    {
        printf("Impossibile aprire/creare il file.\n\n\n");
        exit(1);
    }


   calorie_totali=0;
   km_totali=0;
   oretot=0;
   minutitot=0;
   seconditot=0;

   while(!feof(fp))
  {

  fscanf(fp,"Data             : %d-%d-%d\n",&giorno,&mese,&anno);
  fscanf(fp,"Kilometri        : %f\n",&kilometri);
  fscanf(fp,"Tempo            : %d:%d:%d\n",&ore,&minuti,&secondi);
  fscanf(fp,"Calorie          : %d\n",&calorie);
  fscanf(fp,"Metri/Secondo    : %f\n",&metrisecondo);
  fscanf(fp,"Minuti/Kilometro : %d:%d\n",&min,&km);

  km_totali+=kilometri;
  calorie_totali+=calorie;
  oretot+=ore;
  minutitot+=minuti;
  seconditot+=secondi;

  }

    printf("\nKilometri Totali : %0.2f",km_totali);
    printf("\nCalorie Totali   : %d\n",calorie_totali);
    sommasecondi=(oretot*3600)+(minutitot*60)+seconditot;
    orepart=((float)sommasecondi)/3600;
    fractpartO=modf(orepart,&intpartO);
    intpart0I=((int)intpartO);
    minutipart=fractpartO*60;
    fractpartM=modf(minutipart,&intpartM);
    intpartMI=((int)intpartM);
    secondipart=fractpartM*60;
    fractpartS=modf(secondipart,&intpartS);
    intpartSI=((int)intpartS);
    printf("Tempo Totale     : %0.2d:%0.2d:%0.2d\n",intpart0I,intpartMI,intpartSI);
    fclose(fp);
    

        
        
        
        
        
        
        
        
        
        
        
        }
Che è quello che hai scritto tu senza nessuna modifica SOLO INSERITO IN DUE FUZIONI