Agenda studente

di il
8 risposte

Agenda studente

Potreste darmi una mano con questo codice non riesco a capire perchè crasha.
sicuramente è tutto sbagliato ma avrei bisogno di alcune dritte su come riuscire a scrivere questo programma.
*Scrivere un programma che sia in grado di gestire l'agenda di uno studente. Ogni appuntamento
indica l'ora e una breve descrizione dello stesso. Possono esserci piu appuntameni nello stesso
giorno. L'utente immete gli appuntameni tramite tasiera.
Gli impegni in agenda possono essere immessi in modo disordinato (ad esempio ea possibile
immetere laimpegno per giovedia 0 e successivamente laimpegno per lunedia 4) ma laagenda deve
stampare a video gli impegni in ordine di data e di ora.
*/


#include <stdio.h>
#include <stdlib.h>
#define N 100
#define true 1
#define false 0
enum month{GENNAIO,FEBBRAIO,MARZO,APRILE,MAGGIO,GIUGNO,LUGLIO,AGOSTO,SETTEMBRE,OTTOBRE,NOVEMBRE,DICEMBRE};

typedef struct appuntamento {
	char info[50];
	int giorno;
	month mese;
	int ora;
	int min;
} app ;


typedef appuntamento elenco[N];

void inizializza(int r)
{
	r = 0;
}

void inserisci(elenco e, int r, app elem)
{
	e[r++] = elem;
}

void stamparecord(app a)
{
	printf("info appuntamento: \n\n ");
	printf("%s" , a.info);
	printf("in data %d/%d    " , a.giorno, a.mese);
	printf ("alle ore %d:%d . " , a.ora, a.min);
}

void stampaelenco(elenco e, int r)
{
	printf("stampa agenda:  \n\\n");
	for (int i=0; i<r; i++)
	stamparecord(e[i]);
}

int main ()
{
	elenco agenda;
	int riemp;
	int esci = false;
	int scelta;
	app a;

	
	inizializza(riemp);
	
	while(!esci)
	{
		system("clear");
		printf("agenda impegni:   \n\n\n");
		printf("1. per inserire un nuovo appuntamento.\n");
		printf("2.per stampare tutta l'agenda. \n");
		printf("3. per uscire.\n");
		
		scanf("%d" , &scelta);
		
		if(scelta == 1)
		{
			printf("inserire info appuntamento: \n");
			scanf("%s", a.info);
		
			printf("il giorno:  ");
			scanf("%d  " , a.giorno);
			scanf("%d  .", a.mese);
			inserisci(agenda, riemp, a);
		}
		else if (scelta == 2)
		{
			stampaelenco(agenda, riemp);
		}
		else if (scelta == 3)
		esci = true;
	
	}
	return 0;
}

8 Risposte

  • Re: Agenda studente

    Cosi come hai posto la domanda non credo che qualcuno ti aiuti!
    xche passi per quello che si vuol far fare i compiti e qui non facciamo compiti.
    quello che ti posso dire e di indicare
    dove e quale è il problema
    [/b]
  • Re: Agenda studente

    Attenzione a queste linee

    scanf("%d ", a.giorno);
    scanf("%d .", a.mese);

    in cui devi usare il puntatore alle variabili
  • Re: Agenda studente

    smalldragon ha scritto:


    Cosi come hai posto la domanda non credo che qualcuno ti aiuti!
    xche passi per quello che si vuol far fare i compiti e qui non facciamo compiti.
    quello che ti posso dire e di indicare
    dove e quale è il problema
    [/b]

    non era mia intenzione, volevo solo capire all'interno di questo codice, se impostato bene, quali fossero i problemi del crash, del perchè appena inserisco la data vai in crash e si chiude.
  • Re: Agenda studente

    oregon ha scritto:


    Attenzione a queste linee

    scanf("%d ", a.giorno);
    scanf("%d .", a.mese);

    in cui devi usare il puntatore alle variabili
    non ho dichiarato nessun puntatore. a quanto pare devo farlo.
    deve essere un puntatore per ogni variabile??
  • Re: Agenda studente

    Sai come funziona la scanf?

    a.giorno e a.mese sono variabili numeriche e quindi, per la scanf, devi scrivere

    &a.giorno
    &a.mese
  • Re: Agenda studente

    Non è che anche in inizializza() ci vorrebbe un puntatore?
    void inizializza(int *r) {
        *r = 0;
    }
  • Re: Agenda studente

    Nella struct non andrebbe ripetuta la parola-chiave enum davanti a month? A me non compila altrimenti (in ogni caso non sarebbe più semplice usare anche per il mese una semplice variabile intera?)

    Similmente la riga di codice
    typedef appuntamento elenco[N];
    dovrebbe essere modificata in
    typedef app elenco[N];
    oppure
    typedef struct appuntamento elenco[N];
    Sulla scia di quanto detto da AldoBaldo, passando alla funzione inserisci() la variabile riemp per valore, ogni incremento avvenuto all'interno della funzione sarà perso una volta tornati nel main.
  • Re: Agenda studente

    poloc.9 ha scritto:


    smalldragon ha scritto:


    Cosi come hai posto la domanda non credo che qualcuno ti aiuti!
    xche passi per quello che si vuol far fare i compiti e qui non facciamo compiti.
    quello che ti posso dire e di indicare
    dove e quale è il problema
    [/b]

    non era mia intenzione, volevo solo capire all'interno di questo codice, se impostato bene, quali fossero i problemi del crash, del perchè appena inserisco la data vai in crash e si chiude.
    il fatto che non avevi specificato ne il problema e ne dove esso si verificava, nel post iniziale!
    ma adesso che lo hai fatto non c'è nessun problema!
Devi accedere o registrarti per scrivere nel forum
8 risposte