Agenda mi date una manina?

di il
49 risposte

49 Risposte - Pagina 3

  • Re: Agenda mi date una manina?

    Ciao Alexxandro,
    il ciclo lo controllo con le flag, e gli do l' uscita ,quando serve, ora il problema sta sulle chiamate a funzion
  • Re: Agenda mi date una manina?

    Ciao ho visto che entra nelle funzioni, ma dove devo cambiare nei for?
  • Re: Agenda mi date una manina?

    Se non ti esprimi con frasi chiare in italiano, è difficile risponderti.
  • Re: Agenda mi date una manina?

    Ho scritto una printf all' interno delle funzioni per capire se il main le chiamava, ora non riesco a capire, dove sia il problema, per il quale le funzioni non entrano nei cicli, dove ho sbagliato?
  • Re: Agenda mi date una manina?

    Dove hai sbagliato?

    E come si fa a dirsi se non mostri SEMPRE il codice di cui parli?
  • Re: Agenda mi date una manina?

    È quello di cui sopra;

    questo è tutto il programma
    
    /*
      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()
    {
    	printf("Visualizzo il tuo appuntamento......\n");
    	int i;
    	
    	for(i=0;i<agenda.num_utenti;i++)
    	{
    		if((password())==0)
    		{
    			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()
    {
    	printf("Disdico il tuo appuntamento......\n");
    	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()
    {
    	printf("Inserisco il tuo appuntamento......\n");
    	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;
    		}
    		else
    		{
    			return 1;
    		}
    	
    	}
    }
    
    questa è una function generale:
    
    void inserire()
    {
    	printf("Inserisco il tuo appuntamento......\n");
    	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]);
    		}
    	}
    }
    
  • Re: Agenda mi date una manina?

    Num_utenti è a zero, quindi in ogni funzione non viene eseguito il for
  • Re: Agenda mi date una manina?

    Grazie, cerco di risolvere il problema,
    se mi fornisci un ideaa, sarebbe gentile...
  • Re: Agenda mi date una manina?

    Beh ho visto che azzeri nella funzione di inizializzazione DOPO che hai inserito il numero di utenti... Ovviamente così perdi quell'informazione
  • Re: Agenda mi date una manina?

    Ciao Oregon ringrazio te e tutti per gli aiuti ma devo ancora ricorrere a voi,
    Ho tolto la funzione inizializza dal main, e ora quando digito i per inserire gli appuntamenti mi fa entrare nel primo for, e finalmente un passo avanti, ma poi la funzione esce al secondo for, li dove posso rimediare?
  • Re: Agenda mi date una manina?

    oregon ha scritto:


    Beh ho visto che azzeri nella funzione di inizializzazione DOPO che hai inserito il numero di utenti... Ovviamente così perdi quell'informazione
    L' ho fatto prima di vedere il tuo commento, quindi era una direzione giusta togliere l' inizializzazione dal main
  • Re: Agenda mi date una manina?

    Ripropongo la domanda, come mai la condizione del secondo for è nulla, tale per cui mi esce dalla funzione?
  • Re: Agenda mi date una manina?

    Giacomo ... ma perché non fai un po' di debugging da solo ? Questo thread non può durare all'infinito !

    Esegui passo passo e controlla la condizione di uscita del for ... e capirai da solo perché esce !
  • Re: Agenda mi date una manina?

    Ci sto provando, ma non ne vengo fuori
  • Re: Agenda mi date una manina?

    E se ci stai provando, cosa succede con il debugger quando esegui quella if esattamente? Quali sono i valori delle variabili che lo controllano?
Devi accedere o registrarti per scrivere nel forum
49 risposte