Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] Ordinamento

  1. #1

    [C] Ordinamento

    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(
    == 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(
    != 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->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.nomenome);
           
    printf("Tipo > ");
           
    scanf("%s"tipo);
           
    strcpy(daInserire.tipotipo);
           
    printf("Ora > ");
           
    scanf("%s"ora);
           
    strcpy(daInserire.oraora);
           
    printf("Minuti > ");
           
    scanf("%s"minuto);
           
    strcpy(daInserire.minutominuto);
           
    printf("Durata > ");
           
    scanf("%s"durata);
           
    strcpy(daInserire.duratadurata);
           
           if(
    != 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
                     
    = (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


























  2. #2
    Ciao,

    puoi vedere qui

    http://forum.html.it/forum/showthrea...readid=1232501

    devi solo adattare il codice al tuo problema.

  3. #3
    Grazie!

    Ho provato a fare cosi:

    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);
    int Ordina(const void *p1, const void *p2);
    void pausa();

    //main
    main(void
    {
           
    //variabile scelta
           
    int scelta;
           
    struct elemento *lista NULL;
           
    manifestazione *man;
           
           
           
    //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)
                {
                     
    qsort(mansizeof(manifestazione) ,sizeof(manifestazione), Ordina);
                }
           }
    //chiusura ciclo for
           
    }//chiusura main

    /*
    Visualizza Manifestazioni
    */
    void VisualizzaManifestazione(struct elemento *p)
    {
         if(
    == 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(
    != 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->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.nomenome);
           
    printf("Tipo > ");
           
    scanf("%s"tipo);
           
    strcpy(daInserire.tipotipo);
           
    printf("Ora > ");
           
    scanf("%s"ora);
           
    strcpy(daInserire.oraora);
           
    printf("Minuti > ");
           
    scanf("%s"minuto);
           
    strcpy(daInserire.minutominuto);
           
    printf("Durata > ");
           
    scanf("%s"durata);
           
    strcpy(daInserire.duratadurata);
           
           if(
    != 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
                     
    = (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
    */
    int Ordina(const void *p1, const void *p2)
    {
        
    manifestaziones1 = (manifestazione*)p1;
        
    manifestaziones2 = (manifestazione*)p2;
        
        if(
    s1->ora s2->ora)
        return -
    1;
        else return 
    1;
            
    }
         
      
    //funzione pausa
    void pausa()
    {
         
    char invio;
         
    printf("premere Invio per continuare");
         
    invio getchar();
         return;

    Il programma funziona!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.