Agenda studente

di Anonimizzato23858 il
8 risposte
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

  • 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]
  • Attenzione a queste linee

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

    in cui devi usare il puntatore alle variabili
  • 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.
  • 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??
  • Sai come funziona la scanf?

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

    &a.giorno
    &a.mese
  • Non è che anche in inizializza() ci vorrebbe un puntatore?
    void inizializza(int *r) {
        *r = 0;
    }
  • 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.
  • 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