Agenda mi date una manina?

di il
49 risposte

Agenda mi date una manina?

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

  • Re: Agenda mi date una manina?

    Ciao! Migliorare è un po' generico, cosa vorresti fare?
  • Re: Agenda mi date una manina?

    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
  • Re: Agenda mi date una manina?

    Se non sbaglio dovresti avere un errore in compilazione, perché hai sbagliato il nome della funzione: la chiami "visualizza" invece che "visualizzare"
  • Re: Agenda mi date una manina?

    Ok pero corregendo quest' errore non mi da la possibilità di visualizzare tutti gli appuntamenti inseriti eè li il problema generale
  • Re: Agenda mi date una manina?

    Anzi non mi fa nemmeno andare dopo l' inserimento dell' nome
  • Re: Agenda mi date una manina?

    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.
  • Re: Agenda mi date una manina?

    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.
  • Re: Agenda mi date una manina?

    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
  • Re: Agenda mi date una manina?

    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;
    }	
    
  • Re: Agenda mi date una manina?

    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
  • Re: Agenda mi date una manina?

    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à...
  • Re: Agenda mi date una manina?

    Questo è il primo:
    linea 51 1 [Error] expected initializer before 'void'
    si riferisce alla procedura void(anno(int *)
  • Re: Agenda mi date una manina?

    Controlla la linea precedente.

    P.S. Dopo che correggi un errore, ricompila, perché la lista degli errori potrebbe variare ...
  • Re: Agenda mi date una manina?

    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