Implementazione funzione per disdire un Appuntamento in C

di il
8 risposte

Implementazione funzione per disdire un Appuntamento in C

Dato un mese, un giorno e un’ora permettere all’utente di:
Disdire un appuntamento.
Qualcuno potrebbe darmi una mano?
[*][*]
typedef struct{ //GESTISCE IL SINGOLO APPUNTAMENTO
    char mese[11];
    char giorno[6];
    int anno;
    float ora;
    char titolo_appuntamento[100];
    char tipo_appuntamento[250];
}Appuntamento;
typedef struct{ //GESTIONE LISTA APPUNTAMENTI
    Appuntamento elementi[1000];
    int num_appuntamenti;
}Lista_Appuntamenti;
/*PROTOTIPI FUNZIONI */
int menu();
Lista_Appuntamenti inserimento_appuntamento();
void Stampa_Appuntamenti(Lista_Appuntamenti list);

/****MAIN****/
int main()
{
   Lista_Appuntamenti L;
   int scelta;
   while(scelta=menu()){    
        switch(scelta){
        case 1:
            system("CLS");
            printf("***INSERISCI APPUNTAMENTO***\n");
            L=inserimento_appuntamento();//return lista all interno di L
            printf("\n");
            printf("***LISTA APPUNTAMENTI FISSATI***\n");
            Stampa_Appuntamenti(L);
            system("PAUSE");
            break;
        case 2: //annulla appuntamento
            system("CLS");
            printf("***DISDICI APPUNTAMENTO***\n");
            system("PAUSE");
            break;
        case 3: //stampa app in base a ora in un mese
            system("CLS");
            printf("***INSERISCI UN'ORA PER VISUALIZZARE GLI APPUNTAMENTI DEL MESE***\n");
            system("PAUSE");
            break;
        case 0:
             return 0;
        }
    }
}
int menu(){
    int scelta;
    printf("***GESTIONE AGENDA***\n");
    printf("[1] INSERISCI APPUNTAMENTO\n");
    printf("[2] DISDICI APPUNTAMENTO\n");
    printf("[3] INSERISCI ORA PER VISUALIZZARE APPUNTAMENTI DEL MESE\n");
    printf("[0] ESCI\n\n");
    printf("SCELTA :  \n");
    scanf("%d",&scelta);
    while(scelta<0 || scelta>4){
        printf("SCELTA NON VALIDA!!!!");
        printf("SCELTA : \n");
        scanf("%d",&scelta);
        return scelta;
    }
        return scelta;
}
Lista_Appuntamenti inserimento_appuntamento(){
    Lista_Appuntamenti list;
    int i;
    printf("QUANTI APPUNTAMENTI VUOI INSERIRE?\n");
    scanf("%d",&list.num_appuntamenti);
    fflush(stdin);
    for(i=0;i<list.num_appuntamenti;i++){
            printf("INSERISCI IL MESE: \n");
            gets(list.elementi[i].mese);
            printf("INSERISCI IL GIORNO: \n");
            gets(list.elementi[i].giorno);
            printf("INSERISCI L'ANNO: \n");
            scanf("%d",&list.elementi[i].anno);
            printf("INSERISCI L'ORA IN CUI FISSARE L'APPUNTAMENTO : FORMATO HH.MM\n");
            scanf("%f",&list.elementi[i].ora);
            fflush(stdin);
            printf("INSERISCI TITOLO DELL'APPUNTAMENTO :\n");
            gets(list.elementi[i].titolo_appuntamento);
            printf("INSERISCI DESCRIZIONE APPUNTAMENTO :\n");
            gets(list.elementi[i].tipo_appuntamento);
            fflush(stdin);
        }
    return list;
}
void Stampa_Appuntamenti(Lista_Appuntamenti list){
    int i;
    for(i=0;i<list.num_appuntamenti;i++){
            printf("APPUNTAMENTO N.%d\n",i+1);
            printf("TITOLO APPUNTAMENTO :%s\n",list.elementi[i].titolo_appuntamento);
            printf("TIPO DI APPUNTAMENTO:%s\n",list.elementi[i].tipo_appuntamento);
            printf("GIORNO: %s\n",list.elementi[i].giorno);
            printf("MESE: %s\n",list.elementi[i].mese);
            printf("ANNO: %d\n",list.elementi[i].anno);
        }
}

8 Risposte

  • Re: Implementazione funzione per disdire un Appuntamento in C

    Perchè non inizi a dirci qual è il problema?!
  • Re: Implementazione funzione per disdire un Appuntamento in C

    Nippolo ha scritto:


    Perchè non inizi a dirci qual è il problema?!
    Non riesco a capire come eliminare un "appuntamento" dalla struct. Dovrei chiedere all'utente quando vuole disdire l'appuntamento,poi non so come tornare nella struct per eliminare quel determinato appuntamento.
  • Re: Implementazione funzione per disdire un Appuntamento in C

    mimmolg ha scritto:


    Nippolo ha scritto:


    Perchè non inizi a dirci qual è il problema?!
    Non riesco a capire come eliminare un "appuntamento" dalla struct. Dovrei chiedere all'utente quando vuole disdire l'appuntamento,poi non so come tornare nella struct per eliminare quel determinato appuntamento. Avevo pensato di utilizzare la funzione strtok per far uscire degli spazi entrando nella posizione dell elemento che si vuole eliminare. Ma non so proprio come implementarla e come posso confrontare...
  • Re: Implementazione funzione per disdire un Appuntamento in C

    Tanto per cominciare, quali dati chiedi all'utente per sapere quale appuntamento disdire?
  • Re: Implementazione funzione per disdire un Appuntamento in C

    oregon ha scritto:


    Tanto per cominciare, quali dati chiedi all'utente per sapere quale appuntamento disdire?
    All'inizio da un giorno un mese e l'ora faccio inserire l'appuntamento. Poi sempre con giorno mese e ora devo disdire l appuntamento
  • Re: Implementazione funzione per disdire un Appuntamento in C

    Non ho capito cosa intendi con disdire un appuntamento. Se il problema è che non sai come identificare un'appuntamento pieno o meno potresti aggiungere un parametro nella struct (tipo un intero chiamato "occupato" che vale 0 o 1) che ti dice se l'hai già usata o no. Disdire un appuntamento potrebbe significare semplicemente modificare occupato in 0 così da andare a sovrascriverla alle successive aggiunte di appuntamenti (ovviamente assicurandoti di modificare occupato in 1 quando aggiungi un appuntamento e di trovarti in un appuntamento con occupato=0)
  • Re: Implementazione funzione per disdire un Appuntamento in C

    Perchè utilizzi il tag QUOTE per le tue risposte?

    Alcune considerazioni:
    - perchè parli di liste se poi utilizzi degli array/vettori?
    - perchè i membri mese e giorno prevedono rispettivamente 11 e 6 caratteri?
    - spesso per risolvere un problema risulta molto utile semplificarlo... nel caso specifico disdire un appuntamento può essere visto come "rimuovere" un numero da un array di interi. Per esempio come rimuoveresti il 5 dall'array {1 4 7 5 9 2}?
    - al posto della funzione
    Lista_Appuntamenti inserimento_appuntamento();
    sarebbe meglio utilizzare una funzione del tipo
    void inserimento_appuntamento(Lista_Appuntamenti *list);
  • Re: Implementazione funzione per disdire un Appuntamento in C

    Ho risolto così :
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #include <string.h>
    typedef struct{
    char appuntamenti[150];
    }Agenda;
    typedef enum{Gennaio=1,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre}Mesi;
    int menu();
    void anno_bisestile(int* anno,bool* bisestile);
    void ins_mese(Mesi* m,int* g,int* h,bool* bisestile);
    void inserire_appuntamento(Agenda appuntamenti[365][24],int* g,int* h);
    void disdici_appuntamento(Agenda appuntamenti[365][24],int* g,int* h);
    int main()
    {
        Agenda appuntamenti[365][24];
        int anno;
        bool bisestile;
        Mesi m;
        int g,h;
        int scelta;
        int n,i;
        anno_bisestile(&anno,&bisestile);
        while(scelta=menu()){
                switch(scelta){
            case 1:/*INSERIMENTO APPUNTAMENTO*/
            printf("Quanti appuntamenti vuoi inserire ?");
            scanf("%d",&n);
            system("CLS");
            for(i=0;i<n;i++){
            printf("%d\n",anno);
            ins_mese(&m,&g,&h,&bisestile);
            inserire_appuntamento(appuntamenti,&g,&h);
            printf("L'appuntamento : %s\nE' stato fissato il %d/%d/%d alle Ore: %d.00\n",appuntamenti[g][h].appuntamenti,g,m,anno,h);
            }
            system("PAUSE");
            break;
            case 2: /*DISDICI APPUNTAMENTO*/
            ins_mese(&m,&g,&h,&bisestile);
            printf("L'appuntamento : %s il %d/%d/%d alle Ore: %d.00\n",appuntamenti[g][h].appuntamenti,g,m,anno,h);
            disdici_appuntamento(appuntamenti,&g,&h);
            printf("%s\n",appuntamenti[g][h].appuntamenti);
            break;
            case 3: /*CERCA APPUNTAMENTO IN BASE A ORA*/
    
            break;
            case 0:
            return 0;
    }
    }
    }
    int menu(){
        int scelta;
        printf("***GESTIONE AGENDA***\n");
        printf("[1] INSERISCI APPUNTAMENTO\n");
        printf("[2] DISDICI APPUNTAMENTO\n");
        printf("[3] INSERISCI ORA PER VISUALIZZARE APPUNTAMENTI DEL MESE\n");
        printf("[0] ESCI\n\n");
        printf("SCELTA :  \n");
        scanf("%d",&scelta);
        while(scelta<0 || scelta>4){
            printf("SCELTA NON VALIDA!!!!");
            printf("SCELTA : \n");
            scanf("%d",&scelta);
            return scelta;
        }
            return scelta;
    }
    void anno_bisestile(int* anno,bool* bisestile){
    printf("inserisci anno :");
    scanf("%d",anno);
    if((*anno%4==0 && *anno%100!=0) || *anno%400==0){
    //printf("L'anno inserito e' Bisestile !!\n");
    *bisestile=true;
    
    }else{
    //printf("L'anno inserito non e' bisestile\n");
    *bisestile=false;
    }
    }
    void ins_mese(Mesi* m,int* g,int* h,bool* bisestile){
    bool trovato=true;
    do{
    printf("INSERIRE MESE :\n");
    scanf("%d",m);
    }while(*m<1 || *m>12);
    trovato=false;
    if(*bisestile){
    if(*m==Febbraio){
         do{
            printf("INSERIRE GIORNO (DA 1 A 29): FORMATO GG\n");
            scanf("%d",g);
            }while(*g<1 || *g>29);
            trovato=true;
    }else if(trovato==false){
                            if(*m==Aprile || *m==Giugno || *m==Settembre || *m==Novembre){
                                do{
                                    printf("INSERIRE GIORNO (DA 1 A 30): FORMATO GG\n");
                                    scanf("%d",g);
                                }while(*g<1 || *g>30);
                                trovato=true;
                            }
    }
    if(trovato==false){
        do{
        printf("INSERIRE GIORNO (DA 1 A 31): FORMATO GG\n");
        scanf("%d",g);
        }while(*g<1 || *g>31);
    }
    }else{
            if(*m==Febbraio){
         do{
            printf("INSERIRE GIORNO (DA 1 A 28): FORMATO GG\n");
            scanf("%d",g);
            }while(*g<1 || *g>29);
            trovato=true;
    }else if(trovato==false){
                            if(*m==Aprile || *m==Giugno || *m==Settembre || *m==Novembre){
                                do{
                                    printf("INSERIRE GIORNO (DA 1 A 30): FORMATO GG\n");
                                    scanf("%d",g);
                                }while(*g<1 || *g>30);
                                trovato=true;
                            }
    }
    if(trovato==false){
        do{
        printf("INSERIRE GIORNO (DA 1 A 31): FORMATO GG\n");
        scanf("%d",g);
        }while(*g<1 || *g>31);
    }
    }
    do{
        printf("INSERIRE ORA (da 0 a 23)\n");
        scanf("%d",h);
        }while(*h<0 || *h>23);
    }
    
    void inserire_appuntamento(Agenda appuntamenti[365][24],int* g,int* h){
        fflush(stdin);
        printf("Inserire appuntamento in Agenda :\n");
        gets(appuntamenti[*g][*h].appuntamenti);
    }
    void disdici_appuntamento(Agenda appuntamenti[365][24],int* g,int* h){
    fflush(stdin);
    strcpy(appuntamenti[*g][*h].appuntamenti,"E' stato Annullato");
    }
    
Devi accedere o registrarti per scrivere nel forum
8 risposte