Agenda mi date una manina?

di il
49 risposte

49 Risposte - Pagina 2

  • Re: Agenda mi date una manina?

    Fatto ecco il secondo errore:
    linea 75 [Error] void value not ignored as it ought to be
    il codice in questione è

    bis=anno(&bisestile);
  • Re: Agenda mi date una manina?

    Non serve che posti tutti gli errori perché, come ti ho detto, man mano che li correggi e ricompili, la lista può variare ...
  • Re: Agenda mi date una manina?

    Giacomo_made4core ha scritto:


    fatto ecco il secondo errore:
    linea 75 [Error] void value not ignored as it ought to be
    il codice in questione è

    bis=anno(&bisestile);

    anno è una funzione void quindi non restituisce nulla. Dunque perché scrivi

    bis=


    ?
  • Re: Agenda mi date una manina?

    Volevo passare a bis il risultato, ora l' errore successivo
    linea 107 68 [Error] expected primary-expression before ')' token
    printf("Quanti impegni devo inserire per il giorno %d :\t",giorno);
    mica devo fare
    printf("Quanti impegni devo inserire per il giorno %d :\t",&giorno); ???
    visto che giorno fa parte di
    typedef struct
    {
    char description[MAX_LUNGHEZZA_STRINGA];
    int ora[MAX_ORA],mese[MAX_MESE],giorno[MAX_GIORNI];
    } impegno;
  • Re: Agenda mi date una manina?

    Giacomo e pure tu però...
    mettitci un pò d'impegno che cxxxo....
    Non ho letto il tuo codice perchè so che mi verrà un mal di testa.
    Qualcuno ti ha già dato risposte, adesso sta a te.
    E' un pò come il film Matrix.
    L'hai visto ?
    Come nella scena dell'oracolo... cosa dice Morfeo a Neo:" io ti indico la porta, poi sarai tu a varcare la soglia ".
    Adesso su la testa e sbattici con sto codice.
    Vamoss al lavoro!!!!!
    Usa la testa
  • Re: Agenda mi date una manina?

    Ciao Ragazzi, sono ancora con la mia agenda a darvi un po di fastidio, o risolto finalmente tutti gli errori ora, vi linkerò il codice, se qualcuno avrà la bontà un attimo di farci qualche test o di scorrere le righe del codice, noterà che se si sceglie di far registrare più utenti, appena sceglierà la funzione di uscita dell' agenda essa si chiude e non da la possibilità ad un ulteriore utente di operarci sopra, ecco vorrei far in modo che quando faccio uscire dall' agenda un utente preciso, mi vada al prossimo utente, cioè alla richiesta di iserimento della password che specifica l' utente, esponetemi i vostri dubbi in merito alla mia questione,
    
     /*
      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>
    #include<time.h>
    #include<ctype.h>
    #define MAX_ORA 23
    #define MAX_LUNGHEZZA_STRINGA 50
    #define MAX_GIORNI 31
    #define MAX_MESE 12
    #define MAX_IMPEGNI 5
    #define MAX_UTENTE 20
    #define MAX_ANNO 2015
    #define g_31 31
    #define g_28 28
    #define g_29 29
    #define g_30 30
    
    struct
    {
      char Nome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];
      char Cognome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];	
      int indice[MAX_UTENTE];
      int num_utenti;
      char Password[MAX_UTENTE][MAX_IMPEGNI];
    }agenda;
    
    struct
    {
    	int libero;
    	int num_impegni;
    	char description[MAX_IMPEGNI][MAX_LUNGHEZZA_STRINGA];
    	int ora[MAX_IMPEGNI];
    	int mese[MAX_IMPEGNI];
    	int giorno[MAX_IMPEGNI];
    	int anno[MAX_IMPEGNI];
    }utente[MAX_UTENTE]; //facciamo un array di struct per ogni persona
    
    void crea_agenda();
    void inizializza();
    int controllo_password(char [MAX_IMPEGNI]); // Riferimento per indirizzo del primo elemento dell' array che puo' essere visto come un puntatore
    void visualizza();
    void disdire();
    //void bisestile(int *);
    
    int main()
    {
    	
    	char cosa_fare;
    	int flag=0;
    	srand(time(NULL));
    	
    	while(flag == 0)
    	{
    		crea_agenda();
    		printf("***********************************************\n");
    		printf("* Benvenuto/a nella proria agenda elettronica *\n");
    		printf("***********************************************\n");
    		printf("Digitare la propria scelta\n");
    		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 propria 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
        	{
        		visualizza();    
        	}   
        	if(cosa_fare == 'i' || cosa_fare == 'I')
        	{
        		inizializza();    
       		}	 
        	if(cosa_fare == 'D' || cosa_fare == 'd')
        	{
        		disdire();	
        	}             
        	if(cosa_fare == 'S' || cosa_fare == 's')
        	{
            	printf("Ciao e' stato un piacere esserti utile\n");
            	flag=1;
        	}
    	}
        system("pause");
      	return 0;	
    }
    void inizializza()
    {
    	int i;
    	agenda.num_utenti=0;
    	for(i=0;i<MAX_UTENTE;i++)
    	{
    		utente[i].libero=1;
    	}
    	agenda.num_utenti=0;
    }
    void crea_agenda()
    {
    	
    	int n_utente=0;
    	int loop;
    	int i,j;
    	
    	printf("Inserisci il numero di utenti da registrare:\t");
    	do
    	{
    		loop=1;
    		scanf("%d",&n_utente);
    		fflush(stdin);
    		if(n_utente+agenda.num_utenti > MAX_UTENTE)
    		{
    			printf("Non posso gestire tutti questi utenti! Ridefinire numeri di utenti:\a\t");
    			loop=0;
    		}
    	}while(loop==0);
    	
    	agenda.num_utenti=agenda.num_utenti+n_utente;
    	
    	
    	for(i=agenda.num_utenti-n_utente;i<agenda.num_utenti;i++)
    	{
    		printf("Inserire il proprio nome:\t");
    		scanf("%s",&agenda.Nome[i]);
    		printf("Inserire il proprio cognome:\t");
    		scanf("%s",&agenda.Cognome[i]);		
    		do
    		{
    			loop=1;
    			printf("Inserire Password di almeno 4 caratteri:\t");
    			scanf("%s",&agenda.Password[i]);
    		}while(strlen(agenda.Password[i])>=MAX_IMPEGNI || controllo_password(agenda.Password[i])==1);
    		do
    		{
    			agenda.indice[i]=rand()%MAX_UTENTE; //GESTIONE DELLA POSIZIONE DEGLI UTENTI
    		}while(utente[agenda.indice[i]].libero!=0);
    		
    		printf("Definire il numero di impegni:\t");
    		do
    		{
    			loop=1;
    			scanf("%d",&utente[agenda.indice[i]].num_impegni);
    			fflush(stdin);
    			if(utente[agenda.indice[i]].num_impegni > MAX_IMPEGNI)
    			{
    				printf("Troppi impegni, Rischi di collassare! Ridefinire impegni:\a\t");
    				loop=0;
    			}
    		}while(loop == 0);
    		
    		printf("Inserisci la descrizione del tuo impegno:\t");
    		for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
    		{
    			printf("Definire impegno %d.\n",j+1);
    			do
    			{
    				printf("Inserisci l' ora in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].ora[j]);
    			    fflush(stdin);	
    			}while(utente[agenda.indice[i]].mese[j] > MAX_GIORNI || utente[agenda.indice[i]].ora[j] < 0);
    			do
    			{
    				printf("\nInserisci il giorno in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].giorno[j]);
    			    fflush(stdin);	
    			}while((utente[agenda.indice[i]].giorno[j] > MAX_GIORNI) || (utente[agenda.indice[i]].giorno[j] <= 0));
    			
    			do
    			{
    				printf("\nInserisci il mese in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].mese[j]);
    			    fflush(stdin);	
    			}while(utente[agenda.indice[i]].mese[j] > MAX_MESE || utente[agenda.indice[i]].mese[j] <= 0);
    			
    			do
    			{
    				printf("\nInserisci l' anno in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].anno[j]);
    			    fflush(stdin);	
    			}while(utente[agenda.indice[i]].anno[j] < MAX_ANNO);
    			
    			printf("\nInserisci la descrizione del tuo impegno %d:\t",j+1);
    			scanf("%s",&utente[agenda.indice[i]].description[j]);
    		    system("cls");
    		}
    	}	
    }
    int controllo_password( char buffer[MAX_IMPEGNI])
    {
    	int i;
    	int count=0; 
    	for(i=0;i < agenda.num_utenti ;i++ )
    	{
    		if(!strcmp(buffer,agenda.Password[i]))
    		{
    			count++;
    			if(count>1)
    			{
    				return 1;
    			}
    		}
    	}
    	return 0;
    }
    void visualizza()
    {
    	char mia_password[MAX_IMPEGNI];
    	int i;
    	
    	printf("Inserire Password:\t");
    	scanf("%s",&mia_password);
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		if(!strcmp(mia_password,agenda.Password[i]))
    		{
    			int mia_ora,j,mio_mese;
    			
    			printf("Inserci l' ora degli appuntamenti :\t");
    			scanf("%d",&mia_ora);
    			printf("Inserisci il mese dove cercare:\t");
    			scanf("%d",&mio_mese);
    			
    			for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
    			{
    				if(mia_ora==utente[agenda.indice[i]].ora[j] && mio_mese==utente[agenda.indice[i]].mese[j])
    				{
    					printf("Gli appuntamenti delle ore %d del mese %d del giorno %d sono:\n",mia_ora,mio_mese,utente[agenda.indice[i]].giorno[j]);
    					printf("Impegno %d Descrizione:\n%s\n",j+1,utente[agenda.indice[i]].description[j]);
    					system("PAUSE");
    					system("cls");
    				}
    			}
    			break;
    		}
    	}		
    }
    
    void disdire()
    {
    	char mia_password[MAX_IMPEGNI];
    	int i;
    	
    	printf("Inserire Password:\t");
    	scanf("%s",&mia_password);
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		if(!strcmp(mia_password,agenda.Password[i]))
    		{
    			int mia_ora,j,mio_mese,mio_giorno,mio_anno;
    			
    			printf("Inserci l' ora dell' appuntamento da disdire :\t");
    			scanf("%d",&mia_ora);
    			printf("Inserire il giorno dell' appuntamento da disdire:\t");
    			scanf("%d",&mio_giorno);
    			printf("Inserisci il mese dove cercare:\t");
    			scanf("%d",&mio_mese);
    			printf("Inserisci l' anno:\t");
    			scanf("%d",&mio_anno);
    			for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
    			{
    				if(mia_ora==utente[agenda.indice[i]].ora[j]&&mio_mese==utente[agenda.indice[i]].mese[j]&&mio_anno==utente[agenda.indice[i]].anno[j]&&mio_giorno==utente[agenda.indice[i]].giorno[j])
    				{
    					strcpy(utente[agenda.indice[i]].description[j],"DELETED");
    				    printf("%s",utente[agenda.indice[i]].description[j]);
    					break;
    				}
    			}
    		break;
    		}
    	}
    }
    
  • Re: Agenda mi date una manina?

    Ciao Ragazzi vi prego un ultimo aiutino, un ultimo solo su questa mi agenda, ho risolto molti problemi, ne ho un ultimo, come protretee vedere dal codice è tutto operativo, ho creato una funzione password per gestirmi le password in unica soluzione, ma quando provo ad accedere ad una funzione dell' agenda, mi fa ri inserire nuovamente la password, non so davvero stavolta come fare! help please!!!
    
    /*
      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>
    #include<time.h>
    #include<ctype.h>
    #define MAX_ORA 23
    #define MAX_LUNGHEZZA_STRINGA 50
    #define MAX_GIORNI 31
    #define MAX_MESE 12
    #define MAX_IMPEGNI 5
    #define MAX_UTENTE 20
    #define MAX_ANNO 2015
    #define g_31 31
    #define g_28 28
    #define g_29 29
    #define g_30 30
    
    struct
    {
      char Nome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];
      char Cognome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];	
      int indice[MAX_UTENTE];
      int num_utenti;
      char Password[MAX_UTENTE][MAX_IMPEGNI];
    }agenda;
    
    struct
    {
    	int libero;
    	int num_impegni;
    	char description[MAX_IMPEGNI][MAX_LUNGHEZZA_STRINGA];
    	int ora[MAX_IMPEGNI];
    	int mese[MAX_IMPEGNI];
    	int giorno[MAX_IMPEGNI];
    	int anno[MAX_IMPEGNI];
    }utente[MAX_UTENTE]; //facciamo un array di struct per ogni persona
    
    void crea_agenda();
    void inizializza();
    int controllo_password(char [MAX_IMPEGNI]); // Riferimento per indirizzo del primo elemento dell' array che puo' essere visto come un puntatore
    void visualizza();
    void disdire();
    void inserire();
    int password();
    
    int main()
    {
    	
    	char cosa_fare;
    	int flag=0;
    	srand(time(NULL));
    	crea_agenda();
    	inizializza();
    	
    	while(flag == 0)
    	{
    		
    		printf("***********************************************\n");
    		printf("* Benvenuto/a nella proria agenda elettronica *\n");
    		printf("***********************************************\n");
    		printf("Digitare la propria scelta\n");
    		password();
    		printf("'V' per Visualizzare un appuntamento\n");
        	printf("'I' per Inserire un appuntamento\n");
        	printf("'D' per Disdire un appuntamento\n");
        	printf("'S' per Servire un prossimo utente\n");
        	printf("'U' per Uscire dall'agenda elettronica\n");
        	printf("Inserire la propria 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
        	{
        		visualizza();    
        	}   
        	if(cosa_fare == 'i' || cosa_fare == 'I')
        	{
        		inserire();    
       		}	 
        	if(cosa_fare == 'D' || cosa_fare == 'd')
        	{
        		disdire();	
        	}             
        	if(cosa_fare == 'U' || cosa_fare == 'u')
        	{
            	printf("Ciao e' stato un piacere esserti utile\n");
            	flag=1;
        	}
        	if(cosa_fare == 'S' || cosa_fare == 's')
        	{
        		flag=0; // Se sono stati inseriti piu utenti, illudo l' utente a cedere il posto al prrossimo, se è un utente singolo mette in loop la scermata delle scelte
        	}
    	}
        system("pause");
      	return 0;	
    }
    void inizializza()
    {
    	int i;
    	agenda.num_utenti=0;
    	for(i=0;i<MAX_UTENTE;i++)
    	{
    		utente[i].libero=1;
    	}
    	agenda.num_utenti=0;
    }
    void crea_agenda()
    {
    	
    	int n_utente=0;
    	int loop;
    	int i,j;
    	
    	printf("Inserisci il numero di utenti da registrare:\t");
    	do
    	{
    		loop=1;
    		scanf("%d",&n_utente);
    		fflush(stdin);
    		if(n_utente+agenda.num_utenti > MAX_UTENTE)
    		{
    			printf("Non posso gestire tutti questi utenti! Ridefinire numeri di utenti:\a\t");
    			loop=0;
    		}
    	}while(loop==0);
    	
    	agenda.num_utenti=agenda.num_utenti+n_utente;
    	
    	
    	for(i=agenda.num_utenti-n_utente;i<agenda.num_utenti;i++)
    	{
    		printf("Inserire il proprio nome:\t");
    		scanf("%s",&agenda.Nome[i]);
    		printf("Inserire il proprio cognome:\t");
    		scanf("%s",&agenda.Cognome[i]);		
    		do
    		{
    			loop=1;
    			printf("Inserire Password di almeno 4 caratteri:\t");
    			scanf("%s",&agenda.Password[i]);
    		}while(strlen(agenda.Password[i])>=MAX_IMPEGNI || controllo_password(agenda.Password[i])==1);
    		do
    		{
    			agenda.indice[i]=rand()%MAX_UTENTE; //GESTIONE DELLA POSIZIONE DEGLI UTENTI
    		}while(utente[agenda.indice[i]].libero!=0);
    		
    		system("cls");
    	}	
    }
    int controllo_password( char buffer[MAX_IMPEGNI])
    {
    	int i;
    	int count=0; 
    	for(i=0;i < agenda.num_utenti ;i++ )
    	{
    		if(!strcmp(buffer,agenda.Password[i]))
    		{
    			count++;
    			if(count>1)
    			{
    				return 1;
    			}
    		}
    	}
    	return 0;
    }
    void visualizza()
    {
    	int i;
    	
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		if(password()==1)
    		{
    			int mia_ora,j,mio_mese;
    			
    			printf("Inserci l' ora degli appuntamenti :\t");
    			scanf("%d",&mia_ora);
    			printf("Inserisci il mese dove cercare:\t");
    			scanf("%d",&mio_mese);
    			
    			for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
    			{
    				if(mia_ora==utente[agenda.indice[i]].ora[j] && mio_mese==utente[agenda.indice[i]].mese[j])
    				{
    					printf("Gli appuntamenti delle ore %d del mese %d del giorno %d sono:\n",mia_ora,mio_mese,utente[agenda.indice[i]].giorno[j]);
    					printf("Impegno %d Descrizione:\n%s\n",j+1,utente[agenda.indice[i]].description[j]);
    					system("PAUSE");
    				}
    			}
    			break;
    		}
    	}		
    }
    
    void disdire()
    {
    	int i;
    	
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		if(password()==1)
    		{
    			int mia_ora,j,mio_mese,mio_giorno,mio_anno;
    			
    			printf("Inserci l' ora dell' appuntamento da disdire :\t");
    			scanf("%d",&mia_ora);
    			printf("Inserire il giorno dell' appuntamento da disdire:\t");
    			scanf("%d",&mio_giorno);
    			printf("Inserisci il mese dove cercare:\t");
    			scanf("%d",&mio_mese);
    			printf("Inserisci l' anno:\t");
    			scanf("%d",&mio_anno);
    			for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
    			{
    				if(mia_ora==utente[agenda.indice[i]].ora[j]&&mio_mese==utente[agenda.indice[i]].mese[j]&&mio_anno==utente[agenda.indice[i]].anno[j]&&mio_giorno==utente[agenda.indice[i]].giorno[j])
    				{
    					strcpy(utente[agenda.indice[i]].description[j],"DELETED");
    				    printf("%s",utente[agenda.indice[i]].description[j]);
    					break;
    				}
    			}
    		break;
    		}
    	}
    }
    
    void inserire()
    {
    	int j,i;
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		printf("Inserisci la descrizione del tuo impegno:\t");
    		for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
    		{
    			printf("Definire impegno %d.\n",j+1);
    			do
    			{
    				printf("Inserisci l' ora in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].ora[j]);
    				fflush(stdin);	
    			}while(utente[agenda.indice[i]].mese[j] > MAX_GIORNI || utente[agenda.indice[i]].ora[j] < 0);
    			
    			do
    			{
    				printf("\nInserisci il giorno in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].giorno[j]);
    				fflush(stdin);	
    			}while((utente[agenda.indice[i]].giorno[j] > MAX_GIORNI) || (utente[agenda.indice[i]].giorno[j] <= 0));
    			
    			do
    			{
    				printf("\nInserisci il mese in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].mese[j]);
    			    fflush(stdin);	
    			}while(utente[agenda.indice[i]].mese[j] > MAX_MESE || utente[agenda.indice[i]].mese[j] <= 0);
    			
    			do
    			{
    				printf("\nInserisci l' anno in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].anno[j]);
    			    fflush(stdin);	
    			}while(utente[agenda.indice[i]].anno[j] < MAX_ANNO);
    			
    			printf("\nInserisci la descrizione del tuo impegno %d:\t",j+1);
    			scanf("%s",&utente[agenda.indice[i]].description[j]);
    		}
    	}
    }
    int password()
    {
    	char mia_password[MAX_IMPEGNI];
    	int i;
    	
    	printf("Inserire Password:\t");
    	scanf("%s",&mia_password);
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		if(!strcmp(mia_password,agenda.Password[i]))
    		{
    			return 1;
    		}
    	
    	}
    }
    
  • Re: Agenda mi date una manina?

    Ho gia provato con flag=password()
  • Re: Agenda mi date una manina?

    Ma qual è la domanda?

    Tu inserisci la chiamata alla funzione password all'interno del ciclo e quindi ogni volta verrà chiamata ... non mi pare un mistero...
  • Re: Agenda mi date una manina?

    A me serve per identificare attraverso la password la gestione degli utenti specifici
    in quanto mi serve per verificare a chi devo dare il controllo dell' agenda! Ecco perchè l' ho inserita la la chiamata
    infatti viene effettuata
    dopo mi viene restituito il menu delle scelte
    ma quando inserisco la scelta ritorna a chiedere la password
  • Re: Agenda mi date una manina?

    Ripeto ... Se inserisci la chiamata a password nel ciclo del menu, è ovvio che la chiederà ad ogni giro ...
  • Re: Agenda mi date una manina?

    Ho messo la chiamata a password al di fuori del ciclo, bene, ma ora non chiama le altre funzioni, e mi mette in loop il menu
  • Re: Agenda mi date una manina?

    Nn ho visto il codice tutt'ora, però da quello che dici se ti mette in loop il menu, vuol dire che hai inserito il menu in un ciclio, senza mettere un flag, senza dargli la possibilità di uscire dal ciclio.
  • Re: Agenda mi date una manina?

    ma ora non chiama le altre funzioni, e mi mette in loop il menu
    Mostra il codice attuale e spiegati meglio ...
  • Re: Agenda mi date una manina?

    Ecco il nuovo codice
    
    /*
      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>
    #include<time.h>
    #include<ctype.h>
    #define MAX_ORA 23
    #define MAX_LUNGHEZZA_STRINGA 50
    #define MAX_GIORNI 31
    #define MAX_MESE 12
    #define MAX_IMPEGNI 5
    #define MAX_UTENTE 20
    #define MAX_ANNO 2015
    #define g_31 31
    #define g_28 28
    #define g_29 29
    #define g_30 30
    
    struct
    {
      char Nome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];
      char Cognome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];	
      int indice[MAX_UTENTE];
      int num_utenti;
      char Password[MAX_UTENTE][MAX_IMPEGNI];
    }agenda;
    
    struct
    {
    	int libero;
    	int num_impegni;
    	char description[MAX_IMPEGNI][MAX_LUNGHEZZA_STRINGA];
    	int ora[MAX_IMPEGNI];
    	int mese[MAX_IMPEGNI];
    	int giorno[MAX_IMPEGNI];
    	int anno[MAX_IMPEGNI];
    }utente[MAX_UTENTE]; //facciamo un array di struct per ogni persona
    
    void crea_agenda();
    void inizializza();
    int controllo_password(char [MAX_IMPEGNI]); // Riferimento per indirizzo del primo elemento dell' array che puo' essere visto come un puntatore
    void visualizza();
    void disdire();
    void inserire();
    int password();
    
    int main()
    {
    	
    	char cosa_fare;
    	int flag=0;
    	srand(time(NULL));
    	crea_agenda();
    	inizializza();
    	password();
    	
    	while(flag == 0)
    	{
    		
    		printf("***********************************************\n");
    		printf("* Benvenuto/a nella proria agenda elettronica *\n");
    		printf("***********************************************\n");
    		printf("Digitare la propria scelta\n");
    		printf("'V' per Visualizzare un appuntamento\n");
        	printf("'I' per Inserire un appuntamento\n");
        	printf("'D' per Disdire un appuntamento\n");
        	printf("'S' per Servire un prossimo utente\n");
        	printf("'U' per Uscire dall'agenda elettronica\n");
        	printf("Inserire la propria 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
        	{
        		visualizza();    
        	}   
        	if(cosa_fare == 'i' || cosa_fare == 'I')
        	{
        		inserire();    
       		}	 
        	if(cosa_fare == 'D' || cosa_fare == 'd')
        	{
        		disdire();	
        	}             
        	if(cosa_fare == 'U' || cosa_fare == 'u')
        	{
            	printf("Ciao e' stato un piacere esserti utile\n");
            	flag=1;
        	}
        	if(cosa_fare == 'S' || cosa_fare == 's')
        	{
        		password();
        		flag=0; // Se sono stati inseriti piu utenti, illudo l' utente a cedere il posto al prrossimo, se è un utente singolo mette in loop la scermata delle scelte
        	}
    	}
        system("pause");
      	return 0;	
    }
    void inizializza()
    {
    	int i;
    	agenda.num_utenti=0;
    	for(i=0;i<MAX_UTENTE;i++)
    	{
    		utente[i].libero=1;
    	}
    	agenda.num_utenti=0;
    }
    void crea_agenda()
    {
    	
    	int n_utente=0;
    	int loop;
    	int i,j;
    	
    	printf("Inserisci il numero di utenti da registrare:\t");
    	do
    	{
    		loop=1;
    		scanf("%d",&n_utente);
    		fflush(stdin);
    		if(n_utente+agenda.num_utenti > MAX_UTENTE)
    		{
    			printf("Non posso gestire tutti questi utenti! Ridefinire numeri di utenti:\a\t");
    			loop=0;
    		}
    	}while(loop==0);
    	
    	agenda.num_utenti=agenda.num_utenti+n_utente;
    	
    	
    	for(i=agenda.num_utenti-n_utente;i<agenda.num_utenti;i++)
    	{
    		printf("Inserire il proprio nome:\t");
    		scanf("%s",&agenda.Nome[i]);
    		printf("Inserire il proprio cognome:\t");
    		scanf("%s",&agenda.Cognome[i]);		
    		do
    		{
    			loop=1;
    			printf("Inserire Password di almeno 4 caratteri:\t");
    			scanf("%s",&agenda.Password[i]);
    		}while(strlen(agenda.Password[i])>=MAX_IMPEGNI || controllo_password(agenda.Password[i])==1);
    		do
    		{
    			agenda.indice[i]=rand()%MAX_UTENTE; //GESTIONE DELLA POSIZIONE DEGLI UTENTI
    		}while(utente[agenda.indice[i]].libero!=0);
    		
    		system("cls");
    	}	
    }
    int controllo_password( char buffer[MAX_IMPEGNI])
    {
    	int i;
    	int count=0; 
    	for(i=0;i < agenda.num_utenti ;i++ )
    	{
    		if(!strcmp(buffer,agenda.Password[i]))
    		{
    			count++;
    			if(count>1)
    			{
    				return 1;
    			}
    		}
    	}
    	return 0;
    }
    void visualizza()
    {
    	int i;
    	
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		if(password()==1)
    		{
    			int mia_ora,j,mio_mese;
    			
    			printf("Inserci l' ora degli appuntamenti :\t");
    			scanf("%d",&mia_ora);
    			printf("Inserisci il mese dove cercare:\t");
    			scanf("%d",&mio_mese);
    			
    			for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
    			{
    				if(mia_ora==utente[agenda.indice[i]].ora[j] && mio_mese==utente[agenda.indice[i]].mese[j])
    				{
    					printf("Gli appuntamenti delle ore %d del mese %d del giorno %d sono:\n",mia_ora,mio_mese,utente[agenda.indice[i]].giorno[j]);
    					printf("Impegno %d Descrizione:\n%s\n",j+1,utente[agenda.indice[i]].description[j]);
    					system("PAUSE");
    				}
    			}
    			break;
    		}
    	}		
    }
    
    void disdire()
    {
    	int i;
    	
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		if(password()==1)
    		{
    			int mia_ora,j,mio_mese,mio_giorno,mio_anno;
    			
    			printf("Inserci l' ora dell' appuntamento da disdire :\t");
    			scanf("%d",&mia_ora);
    			printf("Inserire il giorno dell' appuntamento da disdire:\t");
    			scanf("%d",&mio_giorno);
    			printf("Inserisci il mese dove cercare:\t");
    			scanf("%d",&mio_mese);
    			printf("Inserisci l' anno:\t");
    			scanf("%d",&mio_anno);
    			for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
    			{
    				if(mia_ora==utente[agenda.indice[i]].ora[j]&&mio_mese==utente[agenda.indice[i]].mese[j]&&mio_anno==utente[agenda.indice[i]].anno[j]&&mio_giorno==utente[agenda.indice[i]].giorno[j])
    				{
    					strcpy(utente[agenda.indice[i]].description[j],"DELETED");
    				    printf("%s",utente[agenda.indice[i]].description[j]);
    					break;
    				}
    			}
    		break;
    		}
    	}
    }
    
    void inserire()
    {
    	int j,i;
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		printf("Inserisci la descrizione del tuo impegno:\t");
    		for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
    		{
    			printf("Definire impegno %d.\n",j+1);
    			do
    			{
    				printf("Inserisci l' ora in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].ora[j]);
    				fflush(stdin);	
    			}while(utente[agenda.indice[i]].mese[j] > MAX_GIORNI || utente[agenda.indice[i]].ora[j] < 0);
    			
    			do
    			{
    				printf("\nInserisci il giorno in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].giorno[j]);
    				fflush(stdin);	
    			}while((utente[agenda.indice[i]].giorno[j] > MAX_GIORNI) || (utente[agenda.indice[i]].giorno[j] <= 0));
    			
    			do
    			{
    				printf("\nInserisci il mese in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].mese[j]);
    			    fflush(stdin);	
    			}while(utente[agenda.indice[i]].mese[j] > MAX_MESE || utente[agenda.indice[i]].mese[j] <= 0);
    			
    			do
    			{
    				printf("\nInserisci l' anno in cui vuoi inserire l' impegno:\t");
    				scanf("%d",&utente[agenda.indice[i]].anno[j]);
    			    fflush(stdin);	
    			}while(utente[agenda.indice[i]].anno[j] < MAX_ANNO);
    			
    			printf("\nInserisci la descrizione del tuo impegno %d:\t",j+1);
    			scanf("%s",&utente[agenda.indice[i]].description[j]);
    		}
    	}
    }
    int password()
    {
    	char mia_password[MAX_IMPEGNI];
    	int i;
    	
    	printf("Inserire Password:\t");
    	scanf("%s",&mia_password);
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		if(!strcmp(mia_password,agenda.Password[i]))
    		{
    			return 1;
    		}
    	
    	}
    }
    
Devi accedere o registrarti per scrivere nel forum
49 risposte