Salve a tutti!
Sto scrivendo un programma di un compito di Informatica.
Questa è la traccia:
"Un Comune deve organizzare una manifestazione di intrattenimento nel centro cittadino. Su un file strutturato (“eventi.dat”) bisogna pertanto memorizzare gli eventi che costituiscono ala manifestazione, caratterizzati dalle seguenti informazioni: nome organizzazione, tipo evento, ora inizio evento, minuto inizio evento, durata evento(in minuti).
Si codifichi in linguaggio C un programma che:
permetta l’inserimento di un nuovo evento nel file(anche quando il file è vuoto)
consenta di ordinare gli eventi in base all’orario (ora e minuto) di inizio
consenta di sapere, data un’ora di inizio, tutti gli eventi della manifestazione organizzati in quell’ora."
Quello che mi manca è l'ordinamento, scritto sopra in grassetto:
Questo è il codice finora scritto:
Codice PHP:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
//creazione struttura per contenere le manifestazioni
typedef struct {
char nome[50];
char tipo[200];
char ora[MAX];
char minuto[MAX];
char durata[MAX];
} manifestazione;
//creazione struttura per la lista
struct elemento {
manifestazione inf;
struct elemento *pun;
};
//prototipi funzioni
void VisualizzaManifestazione(struct elemento *p);
struct elemento *AggiungiManifestazione(struct elemento *p);
void Ordina(struct elemento *p);
void pausa();
//main
main()
{
//variabile scelta
int scelta;
struct elemento *lista = NULL;
//ciclo infinito per il menu
for( ; ; ) {
printf("MANIFESTAZIONI\n");
printf(" 1 Visualizza Manifestazione\n");
printf(" 2 Aggiungi Manifestazione\n");
printf(" 3 Ordina\n");
printf(" 0 Esci\n");
printf("La tua scelta >> ");
scanf("%i", &scelta);
scelta = (int)scelta; //cast
if(scelta == 0)
{
printf("Arrivederci");
break;
}
else if(scelta == 1)
{
VisualizzaManifestazione(lista);
}
else if(scelta == 2)
{
lista = AggiungiManifestazione(lista);
}
else if(scelta == 3)
{
Ordina(lista);
}
}//chiusura ciclo for
}//chiusura main
/*
Visualizza Manifestazioni
*/
void VisualizzaManifestazione(struct elemento *p)
{
if(p == NULL)
{
printf("Non ci sono Manifestazioni");
pausa();
} else {
printf("Nome > %s\n", p->inf.nome);
printf("Tipo > %s\n", p->inf.tipo);
printf("Ora > %s\n", p->inf.ora);
printf("Minuto > %s\n", p->inf.minuto);
printf("Durata > %s\n", p->inf.durata);
pausa();
}
while(p != NULL)//stampiamo tutte le altre manifestazioni
{
printf("Nome > %s\n", p->inf.nome);
printf("Tipo > %s\n", p->inf.tipo);
printf("Ora > %s\n", p->inf.ora);
printf("Minuto > %s\n", p->inf.minuto);
printf("Durata > %s\n", p->inf.durata);
pausa();
p = p->pun; //legge l'elemento successivo
}
return;
}
/*
Aggiungi Manifestazione
*/
struct elemento *AggiungiManifestazione(struct elemento *p)
{
printf("Aggiungi Manifestazione\n");
//dichiariamo le variabili
char nome[50];
char tipo[200];
char ora[MAX];
char minuto[MAX];
char durata[MAX];
manifestazione daInserire;
struct elemento *punt;
//popoliamo le variabili
printf("Nome > ");
scanf("%s", nome);
strcpy(daInserire.nome, nome);
printf("Tipo > ");
scanf("%s", tipo);
strcpy(daInserire.tipo, tipo);
printf("Ora > ");
scanf("%s", ora);
strcpy(daInserire.ora, ora);
printf("Minuti > ");
scanf("%s", minuto);
strcpy(daInserire.minuto, minuto);
printf("Durata > ");
scanf("%s", durata);
strcpy(daInserire.durata, durata);
if(p != NULL)
{
//creazione elementi successivi
//allochiamo la memoria necessaria
punt = (struct elemento *)malloc(sizeof(struct elemento));
//metto daInserire nell'informazione del puntatore
punt->inf = daInserire;
//metto il puntatore in testa alla lista
punt->pun = p;
} else {
//creazione primo elemento
//allochiamo la memoria necessaria
p = (struct elemento *)malloc(sizeof(struct elemento));
//metto da inserire nell'informazione del puntatore
p->inf = daInserire;
//metto il puntatore in testa alla lista
p->pun = NULL;
//assegno p a punt
punt = p;
}
return(punt);
}
/*
ordina le manifestazioni in base all'ora e ai minuti
*/
void Ordina(struct elemento *p)
{
}
//funzione pausa
void pausa()
{
char invio;
printf("premere Invio per continuare");
invio = getchar();
return;
}
Un grazie anticipato per le vostre spiegazioni