Agenda mi date una manina?

di Anonimizzato16454 il
49 risposte
Ciao Ragazzi, mi aiutate a migliorare questo programma che deve simulare un agenda di note,

/*
  Name: Agenda Elettronica
  Copyright: 0124000773
  Author: Giacomo Gargiulo
  Description: Gestione di un agenda elettronica
  
Si vuole simulare la gestione di un’agenda elettronica contenente appuntamenti.
L’agenda è suddivisa in giorni, per 12 mesi complessivi. Ogni giorno è identificato
da 24 ore. Dato un mese, un giorno e un’ora permettere all’utente di:
• Inserire un appuntamento
• Disdire un appuntamento
Inoltre permettere all’utente di
• Data un’ora visualizzare tutti gli appuntamenti in un mese
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define g_31 31
#define g_28 28
#define g_29 29
#define g_30 30
void inserire(char Agenda[12][31][24],int  );
void disdire(char Agenda[12][31][24],int  );
void visualizzare(char Agenda[12][31][24],int  );
int main()
{
    char nome[20];         //dichiaro una variablie per salvare il nome dell' utente
    char Agenda[12][31][24]; //Dichiaro un array 3D di char in cui vengono salvate le stringhe inserite dall'utente
    char cosa_fare;     //Dichiaro una variabile di tipo char dove vengono salvati i caratteri inseriti dall'utente 
                        //per la scelta dell'operazione da eseguire    
    int anno,flag=0;
    int bisestile;
    printf("Benvenuto/a nella propria Agenda Elettronica, ora inserisca il proprio nome:\t");
    scanf("%s",&nome);
    if(nome[20]!='\0')
    {
        while( flag != 1)
        {	
			  do
			  {
			      printf("Benvenuto/a %s inserisci l' anno odierno:\t",nome);
				  scanf("%d",&anno);
				  	
			  }while(anno < 2000);
			  bisestile = anno%2;
			  
              printf("%s cosa desideri fare?\n",nome);
              printf("'V' per Visualizzare un appuntamento\n");
              printf("'I' per Inserire un appuntamento\n");
              printf("'D' per Disdire un appuntamento\n");
              printf("'S' per Uscire dall'agenda elettronica\n");
              printf("Inserire la scelta:\t");
              fflush(stdin);
              cosa_fare= getchar();//Uso la funzione getchar per inserire i caratteri per la scelta dell'operazione da eseguire
              if(cosa_fare == 'v' || cosa_fare == 'V')   //Utilizzo il costrutto di controllo if per gestire i vari casi di inseriemnto da parte dell' utente
              {
   					visualizzare(Agenda,bisestile);           	
  			  }   
     	  	  if(cosa_fare == 'i' || cosa_fare == 'I')
        	  {
	              	inserire(Agenda,bisestile);
              } 
              if(cosa_fare == 'D' || cosa_fare == 'd')
         	  {
		  	   	      disdire(Agenda,bisestile);
			  }             
			  if(cosa_fare == 'S' || cosa_fare == 's')
			  {
				   printf("Ciao %s e' stato un piacere esserti utile\n",nome);
	 	   	   	   flag=1;
			   }
           }   
	   }   
       system("PAUSE");
       return 0;
} 
void visualizza(char Agenda[12][31][24],int bisestile)
{	 
    int scelta_mese,scelta_giorno,scelta_ora; //dischiaro dellevariabili int per le scelte
    int m=0,g=0,h=0; //Dichiaro delle variabili int in cui vengono salvati gli indici dell'array 3D
    int flag=0;
    
	printf("Inserisci il mese in cui e' stato aggiunto un appuntamento o un acquisto:\t");    
    scanf("%d",&scelta_mese);
			      
    if(scelta_mese >= 1 && scelta_mese <= 12) // Utilizo il costrutto if per controllore la gestione dei mesi
    {
        for( ; m <= scelta_mese ; )
        { 
            m++;
        }
        if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) // Utilizo il costrutto if per controllore la gestione dei mesi i cui giorni sono 31
        {
		   	printf("Inserire l' ora in cui e'stato aggiunto a un appuntamento o un acquisto:\t");
            scanf("%d",&scelta_ora);
						 
            if(scelta_ora >= 1 && scelta_ora <= 24) // controllo che l' utente inserisca il giusto reang di ore
            {
                for(; h == scelta_ora; )
                {
                    for( ;g <= g_31; )
		 	  		{
        				h++;	  	    
  					}
  					g++;
				}
				fflush(stdin);
         		printf("%s \n",&Agenda[h][g][m]);
          	}
        }   
        else if(m == 4 || m == 6 || m == 9 || m == 11) //Gestione dei mesi i cui giorni sono 30
        {
			printf("Inserire l' ora in cui e'stato aggiunto a un appuntamento o un acquisto:\t");
            scanf("%d",&scelta_ora);
            if(scelta_ora >= 1 && scelta_ora <= 24)  // controllo che l' utente inserisca il giusto reang di ore
            {
                for( ;h == scelta_ora ; )
                {
                	for( ;g <= g_30; )
 				    {
      					h++;
               		}
               		g++;
          		}
          		fflush(stdin);
                printf("%s\n",&Agenda[h][g][m]);
            }
        }
    } 
    else //Gestione dei mesi i cui giorni sono 28
    {
 	   	printf("Inserire l' ora in cui e'stato aggiunto a un appuntamento o un acquisto:\t");
        scanf("%d",&scelta_ora);
        if(scelta_ora >= 1 && scelta_ora <= 24) // controllo che l' utente inserisca il giusto reang di ore
        {
        	if (bisestile == 0)
        	{
        		for(; h==scelta_ora; )
            	{
			    	for( ;g<=g_28; )
	 	  			{
             			h++;
                	}
                	g++;
            	}
            	fflush(stdin);
            	printf("%s\n",&Agenda[h][g][m]);
        	}
        	else
        	{
        		for(; h==scelta_ora; )
            	{
			    	for( ;g<=g_29; )
	 	  			{
             			h++;
                	}
                	g++;
            	}
            	fflush(stdin);
            	printf("%s\n",&Agenda[h][g][m]);
        	}
        }
    }
}  
void inserire(char Agenda[12][31][24],int bisestile)
{
	int scelta_mese,scelta_giorno,scelta_ora; //dischiaro dellevariabili int per le scelte
	int m=0,g=0,h=0;
	printf("Inserisci il mese in cui aggiungere un appuntamento o un acquisto:\t");
    scanf("%d", &scelta_mese);
    if(scelta_mese >= 1 && scelta_mese <= 12) // Utilizo il costrutto if per controllore la gestione dei mesi
	{
    	for( ; m<=scelta_mese ; )
        {
			m++;
      	}
        if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) // Utilizo il costrutto if per controllore la gestione dei mesi i cui giorni sono 31
        {
 	   		printf("Inserire il giorno in cui aggiungere un appuntamento o un acquisto:\t");
            scanf("%d", &scelta_giorno);
            if(scelta_giorno > 0 && scelta_giorno <= g_31) // controllo che l' utente inserisca i giorni esatti per i mesi di 31 giorni
            {
                for( ; g <= scelta_giorno ; )
                { 
                    g++;
                }
                printf("Inserire l' ora in cui aggiungere un appuntamento o un acquisto:\t");
                scanf("%d",&scelta_ora);
                if(scelta_ora >= 1 && scelta_ora <= 24) // controllo che l' utente inserisca il giusto reang di ore
                {
                    for(; h==scelta_ora; )
                    {
                        h++;
                    }
					printf("Inserire l'appuntamento o le spese da effettuare:\n");
                    fflush(stdin);
                    gets(&Agenda[h][g][m]);//Utilizzo la funzione gets per inserire l'appuntamento o la spesa
                    printf("%s\n E' stato aggiunto nell'agenda\n",&Agenda[h][g][m]);
                }
            }
        }
        else if(m == 4 || m == 6 || m == 9 || m == 11) //Gestione dei mesi i cui giorni sono 30
        {
   	   		printf("Inserire il giorno in cui aggiungere un appuntamento o un acquisto:\t");
            scanf("%d", &scelta_giorno);
            if(scelta_giorno > 0 && scelta_giorno <= g_30)  // controllo che l' utente inserisca i giorni esatti per i mesi di 30 giorni
            {
                for( ; g <= scelta_giorno ; )
                { 
                    g++;
                }
                printf("Inserire l' ora in cui aggiungere a un appuntamento o un acquisto:\t");
                scanf("%d",&scelta_ora);
                if(scelta_ora >= 1 && scelta_ora <= 24)  // controllo che l' utente inserisca il giusto reang di ore
                {
                    for( ; h==scelta_ora ; )
                    {
                        h++;
                    }         
                    printf("Inserire l'appuntamento o le spese da effettuare:\n");
                    fflush(stdin);
                    gets(&Agenda[h][g][m]);//Utilizzo la funzione gets per inserire l'appuntamento o la spesa
                    printf("%s\n E' stato aggiunto nell'agenda\n",&Agenda[h][g][m]);
                }
            }
        } 
        else //Gestione dei mesi i cui giorni sono 28
        {
	   		printf("Inserire il giorno in cui aggiungere un appuntamento o un acquisto:\t");
            scanf("%d", &scelta_giorno);
            if(scelta_giorno > 0) // controllo che l' utente inserisca i giorni esatti per i mesi di 28 giorni
            {
            	if (bisestile == 0)
        		{
        			for( ; h==scelta_ora; )
            		{
			    		for( ;g<=g_28; )
	 	  				{
             				g++;
                		}
                		h++;
                	}
            	}
        		else
        		{
        			for( ; h==scelta_ora; )
            		{
			    		for( ;g<=g_29; )
	 	  				{
             				g++;
                		}
                		h++;
            		}
        		}
        	}
        }
        printf("Inserire l' ora in cui aggiungere a un appuntamento o un acquisto:\t");
        scanf("%d",&scelta_ora);
        if(scelta_ora >= 1 && scelta_ora <= 24) // controllo che l' utente inserisca il giusto reang di ore
        {
            for( ; h==scelta_ora; )
            {
                h++;
            }
            printf("Inserire l'appuntamento o le spese da effettuare:\n");
            fflush(stdin);
            gets(&Agenda[h][g][m]);//Utilizzo la funzione gets per inserire l'appuntamento o la spesa
            printf("%s\n E' stato aggiunto nell'agenda\n",&Agenda[h][g][m]);
        }

    }	
} 
void disdire(char Agenda[12][31][24],int bisestile)
{
	int scelta_mese,scelta_giorno,scelta_ora; //dischiaro dellevariabili int per le scelte
	int m=0,g=0,h=0; //Dichiaro delle variabili int in cui vengono salvati gli indici dell'array 3D
    int flag=0;
    
	printf("Inserire il mese in cui disdire un appuntamento o un acquisto:\t");
    scanf("%d", &scelta_mese);
	if(scelta_mese >= 1 && scelta_mese <= 12) // Utilizo il costrutto if per controllore la gestione dei mesi
    {
        for( ; m<=scelta_mese ; )
        { 
            m--;
        }
        if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) // Utilizo il costrutto if per controllore la gestione dei mesi i cui giorni sono 31
        {
		   	printf("Inserire il giorno in cui disdire un appuntamento o un acquisto:\t");
            scanf("%d", &scelta_giorno);
            if(scelta_giorno > 0 && scelta_giorno <= g_31) // controllo che l' utente inserisca i giorni esatti per i mesi di 31 giorni
            {
                for( ; g <= scelta_giorno ; )
                { 
                    g++;
                }
                printf("Inserire l' ora in cui disdire un appuntamento o un acquisto:\t");
                scanf("%d",&scelta_ora);
             	if(scelta_ora >= 1 && scelta_ora <= 24) // controllo che l' utente inserisca il giusto reang di ore
                {
                	for( ; h==scelta_ora; )
                    {
                        h++;
                    }
                    printf("%s\n E' stato disdetto\n",&Agenda[h][g][m]);
                    //Utilizzo la funzione strcpy per copiare nell'array gli spazi vuoti x disdire l'appuntamento
                    strcpy (&Agenda[h][g][m], "                                                       ");
                }
            }
        }
        else if(m == 4 || m == 6 || m == 9 || m == 11) //Gestione dei mesi i cui giorni sono 30
        {
		   	printf("Inserire il giorno in cui disdire un appuntamento o un acquisto:\t");
            scanf("%d",&scelta_giorno);
        	if(scelta_giorno > 0 && scelta_giorno <= g_30)  // controllo che l' utente inserisca i giorni esatti per i mesi di 30 giorni
            {
                for( ; g <= scelta_giorno ; )
                { 
                    g++;
                }
                printf("Inserire l' ora in cui disdire a un appuntamento o un acquisto:\t");
                scanf("%d",&scelta_ora);
             	if(scelta_ora >= 1 && scelta_ora <= 24)  // controllo che l' utente inserisca il giusto reang di ore
                {
                    for(; h == scelta_ora; )
                    {
                        h++;
                    }
                    printf("%s\n E' stato disdetto\n",&Agenda[h][g][m]);
                    //Utilizzo la funzione strcpy per copiare nell'array gli spazi vuoti x disdire l'appuntamento
                    strcpy (&Agenda[h][g][m], "                                                       ");               
                }
            }      
        }                 
        else //Gestione dei mesi i cui giorni sono 28
        {
		   	printf("Inserire il giorno in cui aggiungere un appuntamento o un acquisto:\t");
            scanf("%d", &scelta_giorno);
            if(scelta_giorno > 0) // controllo che l' utente inserisca i giorni esatti per i mesi di 28 giorni
            {
            	if (bisestile == 0)
        		{
        			for( ; h==scelta_ora; )
            		{
			    		for( ;g<=g_28; )
	 	  				{
             				g++;
                		}
                		h++;
                	}
            	}
        		else
        		{
        			for( ; h==scelta_ora; )
            		{
			    		for( ;g<=g_29; )
	 	  				{
             				g++;
                		}
                		h++;
            		}
        		}
        	}
    	}
        printf("Inserire l' ora in cui aggiungere a un appuntamento o un acquisto:\t");
        scanf("%d",&scelta_ora);
        if(scelta_ora >= 1 && scelta_ora <= 24) // controllo che l' utente inserisca il giusto reang di ore
        {
        	for( ; h==scelta_ora; )
            {
                h++;
            }
            printf("%s\n E' stato disdetto\n",&Agenda[h][g][m]);
            //Utilizzo la funzione strcpy per copiare nell'array gli spazi vuoti x disdire l'appuntamento
            strcpy (&Agenda[h][g][m], "                                                       ");  
      	}
    }   
}       

49 Risposte

  • Ciao! Migliorare è un po' generico, cosa vorresti fare?
  • Ciao vorrei che quando inserisco piu appuntamenti, me li faccia viualizzare, inserendo come chiede il testo il mese e l' ora, e non riesco a capire perchè mi da error return 1
  • Se non sbaglio dovresti avere un errore in compilazione, perché hai sbagliato il nome della funzione: la chiami "visualizza" invece che "visualizzare"
  • Ok pero corregendo quest' errore non mi da la possibilità di visualizzare tutti gli appuntamenti inseriti eè li il problema generale
  • Anzi non mi fa nemmeno andare dopo l' inserimento dell' nome
  • Avevi già aperto un thread per l'agenda e ti avevano detto che c'erano molti, molti errori.
    Adesso riproponi nuovamente il codice con gli stessi errori ...

    Il problema maggiore però è per l'array Agenda.

    Nel codice, questo array

    char Agenda[12][31][24];

    viene usato così

    Agenda[h][g][m]

    ed è sbagliato DUE volte perché gli indici non sono rispettati e l'array è un insieme di CHAR e non di STRINGHE come pensi.
  • EVITA COME LA PESTE

    Secondo, dato che sei agli inizii evita l'uso della scanf che porta a errori difficilmente riconoscibili anche dai piu esperti.

    Se non segui questi due semplici passaggi non sarai in grado di seguire i nostri suggerimenti e pertanto sarà inutile per te continuare a scrivere thread. Perchè è inutile domandare se poi si è sordi.
  • X Giacomo_made4core: hai aperto due 3d sullo stesso argomento, non si fa.
    Ho chiuso il precedente 3d e ti invito a rileggere il regolamento prima del tuo prossimo post, grazie
  • Ciao Ragazzi ho cercato di modificare un po le cose portando il tutto alla struttura struct, ma ora davvero mi serve una mano per uscire dal fango degli errori...
    
    /*
      Name: Agenda Elettronica
      Copyright: 0124000773
      Author: Giacomo Gargiulo
      Description: Gestione di un agenda elettronica
      
    Si vuole simulare la gestione di un’agenda elettronica contenente appuntamenti.
    L’agenda è suddivisa in giorni, per 12 mesi complessivi. Ogni giorno è identificato
    da 24 ore. Dato un mese, un giorno e un’ora permettere all’utente di:
    • Inserire un appuntamento
    • Disdire un appuntamento
    Inoltre permettere all’utente di
    • Data un’ora visualizzare tutti gli appuntamenti in un mese
    */
    #include<stdio.h>
    #include<iostream>
    #include<stdlib.h>
    #include<string.h>
    #include<ctype.h>
    #define MAX_ORA 23
    #define MAX_LUNGHEZZA_STRINGA 100
    #define MAX_GIORNI 31
    #define MAX_MESE 12
    #define MAX_IMPEGNI 5
    #define g_31 31
    #define g_28 28
    #define g_29 29
    #define g_30 30
    
    typedef struct
    {
    	char description[MAX_LUNGHEZZA_STRINGA];
    	int ora[MAX_ORA],mese[MAX_MESE],giorno[MAX_GIORNI];
    } impegno;
    typedef struct
    {
    	impegno commission[MAX_IMPEGNI];
    	int num_impegni;
    }giorno;
    typedef struct
    {
    	giorno date[MAX_GIORNI];
    	int num_giorni;
    }agenda;
    
    void inserisci_impegno(impegno *i);
    void componi_agenda(agenda *a);
    void inserisci_giorno(giorno *g);
    void disdire_impegno(impegno *i);
    void visualizza_agenda(impegno *i)
    void anno(int *);
    
    void anno(int *bisestile)
    {
    	int anno;
    	while(anno < 1990)
    	{
    		printf("Inserisci anno:\t");
    		scanf("%d",&anno);
    	}
    	anno=anno%2;
    	if(anno == 0)
    	{
    		*bisestile = 0;
    	}
    	else
    	{
    		*bisestile = 1;
    	}
    }
    void inserisci_impegno(impegno *i)
    {
    	int bis,mese,bisestile;
    	//int anno(int bisestile);
    	bis=anno(&bisestile);
    	fflush(stdin);
    	printf("Che impegno devo inserire?\n");
    	fflush(stdout);
    	gets(i->description);
    	
    	printf("In che mese hai questo impegno\? inserisci solo il mese ( formato mm\\**)\n");
    	fflush(stdout);
    	scanf("%d",i -> mese);
    	while(*i ->mese > MAX_MESE)
    	{
    		printf("Mese non supportato,reinserisci mese valido\n");
    		scanf("%d",i->mese);		
    	}
    	if(mese == 1 || mese == 3 || mese == 5 || mese == 7 || mese == 8 || mese == 10 || mese == 12) // Utilizo il costrutto if per controllore la gestione dei mesi i cui giorni sono 31
        {
    		printf("In che giorno hai questo impegno\? inserisci solo il giorno ( formato gg\\**)\n");
    		fflush(stdout);
    		scanf("%d",i -> giorno);
    		while(*i ->giorno > g_31)
    		{
    			printf("Giorno non supportato, reinserisci giorno valido\n");
    			scanf("%d",i->giorno);		
    		}
    		printf("A che ora hai questo impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    		fflush(stdout);
    		scanf("%d",i->ora);
    		while(*i->ora > MAX_ORA)
    		{
    			printf("Ora non supportata, reinserisci un' ora valida:\t");
    			scanf("%d",i->ora);
    		}
    		printf("Quanti impegni devo inserire per il giorno %d :\t",giorno);
    		scanf("%d",&num_impegni);
    		fflush(stdout);
    
    		while(num_impegni == 0)
    		{ //evita inserimenti di numeri errati
    			printf("Non hai inserito un numero valido\n"); 
    			fflush(stdin);
    			scanf("%d",&num_impegni);
    		} 
    
    		while(num_impegni > MAX_IMPEGNI)
    		{ //evita di inserire un numero troppo alto
    			printf("Non puoi prendere tutti questi impegni, rischi un collasso da stress!!\n");
    			fflush(stdin);
    			scanf("%d",&num_impegni);
    		}
    	   	
        }   
        else if(mese == 4 || mese == 6 || mese == 9 || mese == 11) //Gestione dei mesi i cui giorni sono 30
        {
    		printf("In che giorno hai questo impegno\? inserisci solo il giorno ( formato gg\\**)\n");
    		fflush(stdout);
    		scanf("%d",i -> giorno);
    		while(*i ->giorno > g_30)
    		{
    			printf("Giorno non supportato,reinserisci giorno valido\n");
    			scanf("%d",i->giorno);		
    		}
    		printf("A che ora hai questo impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    		fflush(stdout);
    		scanf("%d",i->ora);
    		while(*i->ora > MAX_ORA)
    		{
    			printf("Ora non supportata,reinserisci ora valida\n");
    			scanf("%d",i->ora);
    		}	
        } 
        else //Gestione del mese i cui giorni sono 28 o 29 se l' anno e' bisestile 
        {
     	   	printf("In che giorno hai questo impegno\? inserisci solo il giorno ( formato gg\\**)\n");
    		fflush(stdout);
    		scanf("%d",i -> giorno);
    		if(bis == 0)
    		{
    			while(*i ->giorno > g_28)
    			{
    				printf("Giorno non supportato, reinserisci giorno valido\n");
    				scanf("%d",i->giorno);		
    			}
    			printf("A che ora hai questo impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    			fflush(stdout);
    			scanf("%d",i->ora);
    			while(*i->ora > MAX_ORA)
    			{
    				printf("Ora non supportata,reinserisci ora valida\n");
    				scanf("%d",i->ora);
    			}	
    		}
    		else
    		{
    			while(*i ->giorno > g_29)
    			{
    				printf("Giorno non supportato,reinserisci giorno valido\n");
    				scanf("%d",i->giorno);		
    			}
    			printf("A che ora hai questo impegno\? (inserisci solo l'ora) (formato hh\\**)\n");
    			fflush(stdout);
    			scanf("%d",i->ora);
    			while(*i->ora > MAX_ORA)
    			{
    				printf("Ora non supportata,reinserisci ora valida\n");
    				scanf("%d",i->ora);
    			}	
        	}
    	}
    	printf("*********************************\n");
    	printf("*\tAppuntamento inserito!!    *\n");
    	printf("*********************************\n");
    }
    void componi_agenda(agenda *a)
    {
    	int i=0,num_giorno,num_impegni,ripeti;
    	do
    	{
    		printf("In quale giorno vuoi inserire uno o piu impegni?\n");
    		scanf("%d",&num_giorno);
    		while(num_giorno > MAX_GIORNI||num_giorno==0)
    		{ //evito di inserire numeri errati o caratteri
    			getchar();
    			printf("Questo giorno non esiste, inseriscine uno corretto!!!!\n"); 
    			scanf("%d",&num_giorno);
    		}		
    
    		printf("Quanti impegni devo inserire per il giorno %d \?\n",num_giorno);
    		scanf("%d",&num_impegni);
    		fflush(stdout);
    
    		while(num_impegni == 0)
    		{ //evita inserimenti di numeri errati
    			printf("Non hai inserito un numero valido\n"); 
    			fflush(stdin);
    			scanf("%d",&num_impegni);
    		} 
    		inserisci_giorno(&a->date[num_giorno],num_impegni);
    		printf("Digita 1 per inserire un nuovo impegno, altrimenti digita un tasto qualsiasi\nper visualizzare l'agenda\n");
    		scanf("%d",&ripeti);
    	}
    	while(ripeti == 1);
    }
    void disdire_impegno(impegno i)
    {
    	int bis,bisestile,mese;
    	//int anno(int bisestile);
    	bis=anno(&bisestile);
    	fflush(stdin);
    		
    	printf("In che mese vuoi disdire l' impegno? inserisci solo il mese ( formato mm\\**)\n");
    	fflush(stdout);
    	scanf("%d",i -> mese);
    	while(*i ->mese > MAX_MESE)
    	{
    		printf("Mese non supportato, reinserisci mese valido\n");
    		scanf("%d",i->mese);		
    	}
    	if(mese == 1 || mese == 3 || mese == 5 || mese == 7 || mese == 8 || mese == 10 || mese == 12) // Utilizo il costrutto if per controllore la gestione dei mesi i cui giorni sono 31
        {
    		printf("In che giorno  impegno? inserisci solo il giorno ( formato gg\\**)\n");
    		fflush(stdout);
    		scanf("%d",i -> giorno);
    		while(*i ->giorno > g_31)
    		{
    			printf("Giorno non supportato,reinserisci giorno valido\n");
    			scanf("%d",i->giorno);		
    		}
    		printf("A che ora vuoi disdire l' impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    		fflush(stdout);
    		scanf("%d",i->ora);
    		while(*i->ora > MAX_ORA)
    		{
    			printf("Ora non supportata, reinserisci un' ora valida:\t");
    			scanf("%d",i->ora);
    		}
    		//Utilizzo la funzione strcpy per copiare nell'array gli spazi vuoti x disdire l'appuntamento
            strcpy(i,"                                                       ");		   	
        }   
        else if(mese == 4 || mese == 6 || mese == 9 || mese == 11) //Gestione dei mesi i cui giorni sono 30
        {
    		printf("In che giorno vuoi disdire l' impegno? inserisci solo il giorno ( formato gg\\**)\n");
    		fflush(stdout);
    		scanf("%d",i -> giorno);
    		while(*i ->giorno > g_30)
    		{
    			printf("Giorno non supportato,reinserisci giorno valido\n");
    			scanf("%d",i->giorno);		
    		}
    		printf("A che ora hai questo impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    		fflush(stdout);
    		scanf("%d",i->ora);
    		while(*i->ora > MAX_ORA)
    		{
    			printf("Ora non supportata,reinserisci ora valida\n");
    			scanf("%d",i->ora);
    		}
    		//Utilizzo la funzione strcpy per copiare nell'array gli spazi vuoti x disdire l'appuntamento
            strcpy(i,"                                                       ");	
    	
        } 
        else //Gestione del mese i cui giorni sono 28 o 29 se l' anno e' bisestile 
        {
     	   	printf("In che giorno vuoi disdire l' impegno\? Inserisci solo il giorno ( formato gg\\**)\n");
    		fflush(stdout);
    		scanf("%d",i -> giorno);
    		if(bis == 0)
    		{
    			while(*i ->giorno > g_28)
    			{
    				printf("Giorno non supportato,reinserisci giorno valido\n");
    				scanf("%d",i->giorno);		
    			}
    			printf("A che ora vuoi disdire l' impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    			fflush(stdout);
    			scanf("%d",i->ora);
    			while(*i->ora > MAX_ORA)
    			{
    				printf("Ora non supportata,reinserisci ora valida\n");
    				scanf("%d",i->ora);
    			}
    			//Utilizzo la funzione strcpy per copiare nell'array gli spazi vuoti x disdire l'appuntamento
                strcpy(i,"                                                       ");	
    		}
    		else
    		{
    			while(*i ->giorno > g_29)
    			{
    				printf("Giorno non supportato,reinserisci giorno valido\n");
    				scanf("%d",i->giorno);		
    			}
    			printf("A che ora hai questo impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    			fflush(stdout);
    			scanf("%d",i->ora);
    			while(*i->ora > MAX_ORA)
    			{
    				printf("Ora non supportata,reinserisci ora valida\n");
    				scanf("%d",i->ora);
    			}
    			//Utilizzo la funzione strcpy per copiare nell'array gli spazi vuoti x disdire l'appuntamento
                strcpy(i,"                                                       ");	
    	
        	}
    	}
    	printf("*********************************\n");
    	printf("*\tAppuntamento disdetto!!    *\n");
    	printf("*********************************\n");
    }
    void componi_agenda(agenda *a)
    {
    	int i=0,num_giorno,num_impegni,ripeti;
    	do
    	{
    		printf("In quale giorno vuoi inserire uno o piu impegni?\n");
    		scanf("%d",&num_giorno);
    		while(num_giorno > MAX_GIORNI||num_giorno==0)
    		{ //evito di inserire numeri errati o caratteri
    			getchar();
    			printf("Questo giorno non esiste, inseriscine uno corretto!!!!\n"); 
    			scanf("%d",&num_giorno);
    		}		
    
    		printf("Quanti impegni devo inserire per il giorno %d \?\n",num_giorno);
    		scanf("%d",&num_impegni);
    		fflush(stdout);
    
    		while(num_impegni == 0)
    		{ //evita inserimenti di numeri errati
    			printf("Non hai inserito un numero valido\n"); 
    			fflush(stdin);
    			scanf("%d",&num_impegni);
    		} 
    		inserisci_giorno(&a->date[num_giorno],num_impegni);
    		printf("Digita 1 per inserire un nuovo impegno, altrimenti digita un tasto qualsiasi\n per visualizzare l'agenda\n");
    		scanf("%d",&ripeti);
    	}
    	while(ripeti == 1);
    }
    void visualizza_agenda(agenda *a)
    {
    	printf("Inserisci il mese di cui si vuole visualizzare gli appuntamenti, (formato hh\\**)\t");
    	scanf("%d",i -> mese);
    	while(*i ->mese > MAX_MESE)
    	{
    		printf("Mese non supportato,reinserisci mese valido\n");
    		scanf("%d",i->mese);		
    	}
    	if(mese == 1 || mese == 3 || mese == 5 || mese == 7 || mese == 8 || mese == 10 || mese == 12) // Utilizo il costrutto if per controllore la gestione dei mesi i cui giorni sono 31
        {
    		printf("In che giorno hai questo impegno\? inserisci solo il giorno ( formato gg\\**)\n");
    		fflush(stdout);
    		scanf("%d",i -> giorno);
    		while(*i ->giorno > g_31)
    		{
    			printf("Giorno non supportato, reinserisci giorno valido\n");
    			scanf("%d",i->giorno);		
    		}
    		printf("A che ora hai questo impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    		fflush(stdout);
    		scanf("%d",i->ora);
    		while(*i->ora > MAX_ORA)
    		{
    			printf("Ora non supportata, reinserisci un' ora valida:\t");
    			scanf("%d",i->ora);
    		}
    		printf("Quanti impegni devo inserire per il giorno %d :\t",num_giorno);
    		scanf("%d",&num_impegni);
    		fflush(stdout);
    
    		while(num_impegni == 0)
    		{ //evita inserimenti di numeri errati
    			printf("Non hai inserito un numero valido\n"); 
    			fflush(stdin);
    			scanf("%d",&num_impegni);
    		} 
    
    		while(num_impegni > MAX_IMPEGNI)
    		{ //evita di inserire un numero troppo alto
    			printf("Non puoi prendere tutti questi impegni, rischi un collasso da stress!!\n");
    			fflush(stdin);
    			scanf("%d",&num_impegni);
    		}
    	   	
        }   
        else if(mese == 4 || mese == 6 || mese == 9 || mese == 11) //Gestione dei mesi i cui giorni sono 30
        {
    		printf("In che giorno hai questo impegno\? inserisci solo il giorno ( formato gg\\**)\n");
    		fflush(stdout);
    		scanf("%d",i -> giorno);
    		while(*i ->giorno > g_30)
    		{
    			printf("Giorno non supportato,reinserisci giorno valido\n");
    			scanf("%d",i->giorno);		
    		}
    		printf("A che ora hai questo impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    		fflush(stdout);
    		scanf("%d",i->ora);
    		while(*i->ora > MAX_ORA)
    		{
    			printf("Ora non supportata,reinserisci ora valida\n");
    			scanf("%d",i->ora);
    		}	
        } 
        else //Gestione del mese i cui giorni sono 28 o 29 se l' anno e' bisestile 
        {
     	   	printf("In che giorno hai questo impegno\? inserisci solo il giorno ( formato gg\\**)\n");
    		fflush(stdout);
    		scanf("%d",i -> giorno);
    		if(bis == 0)
    		{
    			while(*i ->giorno > g_28)
    			{
    				printf("Giorno non supportato, reinserisci giorno valido\n");
    				scanf("%d",i->giorno);		
    			}
    			printf("A che ora hai questo impegno\? Inserisci solo l'ora (formato hh\\**)\n");
    			fflush(stdout);
    			scanf("%d",i->ora);
    			while(*i->ora > MAX_ORA)
    			{
    				printf("Ora non supportata,reinserisci ora valida\n");
    				scanf("%d",i->ora);
    			}	
    		}
    		else
    		{
    			while(*i ->giorno > g_29)
    			{
    				printf("Giorno non supportato,reinserisci giorno valido\n");
    				scanf("%d",i->giorno);		
    			}
    			printf("A che ora hai questo impegno\? (inserisci solo l'ora) (formato hh\\**)\n");
    			fflush(stdout);
    			scanf("%d",i->ora);
    			while(*i->ora > MAX_ORA)
    			{
    				printf("Ora non supportata,reinserisci ora valida\n");
    				scanf("%d",i->ora);
    			}	
        	}
    	}
    }
    int main()
    {
    	int anno,flag=0;
        int bisestile;
        printf("Benvenuto/a nella propria Agenda Elettronica, ora inserisca il proprio nome:\t");
        scanf("%s",&nome);
        if(nome[20]!='\0')
        {
            while( flag != 1)
            {	
    			  anno(&bisestile);		  
                  printf("%s cosa desideri fare?\n",nome);
                  printf("'V' per Visualizzare un appuntamento\n");
                  printf("'I' per Inserire un appuntamento\n");
                  printf("'D' per Disdire un appuntamento\n");
                  printf("'S' per Uscire dall'agenda elettronica\n");
                  printf("Inserire la scelta:\t");
                  fflush(stdin);
                  cosa_fare= getchar();//Uso la funzione getchar per inserire i caratteri per la scelta dell'operazione da eseguire
                  if(cosa_fare == 'v' || cosa_fare == 'V')   //Utilizzo il costrutto di controllo if per gestire i vari casi di inseriemnto da parte dell' utente
                  {
       					visualizzare_agenda(agenda);           	
      			  }   
         	  	  if(cosa_fare == 'i' || cosa_fare == 'I')
            	  {
    	              	inserire_impegno(agenda);
                  } 
                  if(cosa_fare == 'D' || cosa_fare == 'd')
             	  {
    			   		disdire_impegno(agenda);
    			  }             
    			  if(cosa_fare == 'S' || cosa_fare == 's')
    			  {
    				   printf("Ciao %s e' stato un piacere esserti utile\n",nome);
    	 	   	   	   flag=1;
    			   }
               }   
    	   }   
           system("PAUSE");
           return 0;
    }	
    
  • Ciao toki ti chiedo scusa a te e a tutti gli utenti del mio multi blog, ma avendomi visto bloccato il primo blog, me ne sono aperto un altro, sto cercando di sforzarmi a fare il tutto da solo, ma ora vi chiedo davvero una mano
  • Non sono blog ma thread... A parte questo, elenca gli errori, affrontiamoli e risolviamoli uno per uno.

    Se ti aspetti che qualcuno prenda il tuo programma, lo riscriva correttamente e te lo fornisca, mi sa che non avrà molte possibilità...
  • Questo è il primo:
    linea 51 1 [Error] expected initializer before 'void'
    si riferisce alla procedura void(anno(int *)
  • Controlla la linea precedente.

    P.S. Dopo che correggi un errore, ricompila, perché la lista degli errori potrebbe variare ...
  • Qui metto tutti gli errori;
    g++.exe "C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp" -o "C:\Users\Giacomo\Desktop\Nuova_Agenda.exe" -g3 -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.8.1\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib" -static-libgcc -g3
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:51:1: error: expected initializer before 'void'
    void anno(int *);
    ^

    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp: In function 'void inserisci_impegno(impegno*)':
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:75:5: error: void value not ignored as it ought to be
    bis=anno(&bisestile);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:107:68: error: expected primary-expression before ')' token
    printf("Quanti impegni devo inserire per il giorno %d :\t",giorno);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:108:15: error: 'num_impegni' was not declared in this scope
    scanf("%d",&num_impegni);
    ^

    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp: In function 'void componi_agenda(agenda*)':
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:211:52: error: too many arguments to function 'void inserisci_giorno(giorno*)'
    inserisci_giorno(&a->date[num_giorno],num_impegni);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:48:6: note: declared here
    void inserisci_giorno(giorno *g);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp: In function 'void disdire_impegno(impegno)':
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:221:5: error: void value not ignored as it ought to be
    bis=anno(&bisestile);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:226:15: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i -> mese);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:227:11: error: base operand of '->' has non-pointer type 'impegno'
    while(*i ->mese > MAX_MESE)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:230:15: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->mese);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:236:16: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i -> giorno);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:237:12: error: base operand of '->' has non-pointer type 'impegno'
    while(*i ->giorno > g_31)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:240:16: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->giorno);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:244:15: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->ora);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:245:11: error: base operand of '->' has non-pointer type 'impegno'
    while(*i->ora > MAX_ORA)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:248:16: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->ora);
    ^

    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:251:75: error: cannot convert 'impegno' to 'char*' for argument '1' to 'char* strcpy(char*, const char*)'
    strcpy(i," ");
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:257:16: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i -> giorno);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:258:12: error: base operand of '->' has non-pointer type 'impegno'
    while(*i ->giorno > g_30)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:261:16: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->giorno);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:265:15: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->ora);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:266:11: error: base operand of '->' has non-pointer type 'impegno'
    while(*i->ora > MAX_ORA)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:269:16: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->ora);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:272:75: error: cannot convert 'impegno' to 'char*' for argument '1' to 'char* strcpy(char*, const char*)'
    strcpy(i," ");
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:279:16: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i -> giorno);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:282:13: error: base operand of '->' has non-pointer type 'impegno'
    while(*i ->giorno > g_28)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:285:17: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->giorno);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:289:16: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->ora);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:290:12: error: base operand of '->' has non-pointer type 'impegno'
    while(*i->ora > MAX_ORA)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:293:17: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->ora);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:296:79: error: cannot convert 'impegno' to 'char*' for argument '1' to 'char* strcpy(char*, const char*)'
    strcpy(i," ");
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:300:13: error: base operand of '->' has non-pointer type 'impegno'
    while(*i ->giorno > g_29)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:303:17: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->giorno);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:307:16: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->ora);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:308:12: error: base operand of '->' has non-pointer type 'impegno'
    while(*i->ora > MAX_ORA)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:311:17: error: base operand of '->' has non-pointer type 'impegno'
    scanf("%d",i->ora);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:314:79: error: cannot convert 'impegno' to 'char*' for argument '1' to 'char* strcpy(char*, const char*)'
    strcpy(i," ");
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp: In function 'void componi_agenda(agenda*)':
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:322:6: error: redefinition of 'void componi_agenda(agenda*)'
    void componi_agenda(agenda *a)
    ^

    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:187:6: error: 'void componi_agenda(agenda*)' previously defined here
    void componi_agenda(agenda *a)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:346:52: error: too many arguments to function 'void inserisci_giorno(giorno*)'
    inserisci_giorno(&a->date[num_giorno],num_impegni);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:48:6: note: declared here
    void inserisci_giorno(giorno *g);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp: In function 'void visualizza_agenda(agenda*)':
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:355:13: error: 'i' was not declared in this scope
    scanf("%d",i -> mese);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:361:5: error: 'mese' was not declared in this scope
    if(mese == 1 || mese == 3 || mese == 5 || mese == 7 || mese == 8 || mese == 10 || mese == 12) // Utilizo il costrutto if per controllore la gestione dei mesi i cui giorni sono 31
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:379:62: error: 'num_giorno' was not declared in this scope
    printf("Quanti impegni devo inserire per il giorno %d :\t",num_giorno);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:380:15: error: 'num_impegni' was not declared in this scope
    scanf("%d",&num_impegni);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:422:6: error: 'bis' was not declared in this scope
    if(bis == 0)
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp: In function 'int main()':
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:462:17: error: 'nome' was not declared in this scope
    scanf("%s",&nome);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:478:30: error: 'a' was not declared in this scope
    visualizzare_agenda(&a);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:478:31: error: 'visualizzare_agenda' was not declared in this scope
    visualizzare_agenda(&a);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:482:35: error: 'a' was not declared in this scope
    inserire_impegno(&a);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:482:36: error: 'inserire_impegno' was not declared in this scope
    inserire_impegno(&a);
    ^
    C:\Users\Giacomo\Desktop\Nuova_Agenda.cpp:486:26: error: 'a' was not declared in this scope
    disdire_impegno(&a);
Devi accedere o registrarti per scrivere nel forum
49 risposte