Problemi con una relazione d'ordine

di il
11 risposte

Problemi con una relazione d'ordine

Salve ragazzi, ho un problema riguardante una relazione d'ordine del tipo <Mese, Giorno>, con la quale dovrei ricercare da file i valori precedenti a quella determinata data. Adesso il problema che mi attanaglia di più è come riuscire a confrontare i giorni scritti a lettere (quindi "lunedi") e lo stesso per i mesi ("gennaio", "febbraio", ecc,). I dati nel file da cui acquisire sono salvati nella forma: citta_lunedi_gennaio_30_1090_20.
Questo è il tipo di struttura che volevo utilizzare ma non sono effettivamente sicuro sia giusta:

typedef struct
{
    char citta[SIZE];
    enum giorni{lunedi = 1, martedi, mercoledi, giovedi, venerdi, sabato, domenica}giorni;
    enum mese{gennaio = 1, febbraio, marzo, aprile, maggio, giugno, luglio, agosto, settembre, ottobre, novembre, dicembre}mesi;
    int temperatura;
    int pressione;
    int umidita;
}metropoli;
e questo invece sarebbe invece la funzione per la relazione d'ordine

int relazione_ordine(int i, year mese, week giorno)
{
    if(mese > GetMeseByI(i))
    {
        return 1;
    }
    else if(mese == GetMeseByI(i) && giorno == GetGiornoByI(i))
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
e queste sono le funzioni getmese e getgiorno

enum week GetGiornoByI(int i)
{
    if(i < 0 || i > SIZE)
    {
        puts("Errore, indice troppo grande");
        i = 0;
    }
    return met[i].giorno;
}

enum year GetMeseByI(int i)
{
    if(i < 0 || i > SIZE)
    {
        puts("Errore, indice troppo grande");
        i = 0;
    }
    return met[i].mese;
}
Grazie in anticipo per la pazienza

11 Risposte

  • Re: Problemi con una relazione d'ordine

    Come fai a fare una relazione d'ordine sui giorni della settimana? Lunedì gennaio è il 4, l'11, il 18 o il 25? Viene prima o dopo di oggi venerdì 22 gennaio?

    Se usi i giorni del mese la relazione d'ordine potrebbe essere
    
    int ordine(metropoli m1, metropoli m2){
        return (m1.mese << 5) + m1.giorno - (m2.mese << 5) - m2.giorno;
    }
    
  • Re: Problemi con una relazione d'ordine

    Effettivamente non ho tenuto conto di quest'altro problema, errore mio.
    Il problema penso rimanga invariato però, come faccio a distinguere adesso se è lunedì 4 o lunedì 11? Credo che il mio problema inizii e finisca direttamente nulla struttura, però c'è sempre quel fastidio di dover scrivere i giorni in lettere...Non ho idee
  • Re: Problemi con una relazione d'ordine

    L'enum non è un problema. Scrivere m1.giorno = 1 o m1.giorno = lunedi è la stessa cosa, è solo una comodità.

    Il problema vero è che alla struttura manca un dato essenziale. Se è un progetto vero e non puoi ripartire da zero, ti conviene aggiungere il campo week_of_the_year e sistemare al più presto a mano i record di gennaio
  • Re: Problemi con una relazione d'ordine

    In citta_lunedi_gennaio_30_1090_20 cosa rappresenta 1090_20 ?
  • Re: Problemi con una relazione d'ordine

    oregon ha scritto:


    In citta_lunedi_gennaio_30_1090_20 cosa rappresenta 1090_20 ?
    sarebbero rispettivamente "temperatura", "pressione", "umidità".
  • Re: Problemi con una relazione d'ordine

    Weierstrass ha scritto:


    L'enum non è un problema. Scrivere m1.giorno = 1 o m1.giorno = lunedi è la stessa cosa, è solo una comodità.

    Il problema vero è che alla struttura manca un dato essenziale. Se è un progetto vero e non puoi ripartire da zero, ti conviene aggiungere il campo week_of_the_year e sistemare al più presto a mano i record di gennaio
    Ho il tempo di ripartire da zero in realtà, quindi secondo te da cosa dovrebbe essere composta la struttura?
  • Re: Problemi con una relazione d'ordine

    Metti il campo giorno, mese e anno come int e giorno_della_settimana come enum (informazione accessoria).
    
    int ordine(metropoli m1, metropoli m2){
        return (m1.anno << 9) + (m1.mese << 5) + m1.giorno - (m2.anno << 9) - (m2.mese << 5) - m2.giorno;
    }
    
  • Re: Problemi con una relazione d'ordine

    Boh!
  • Re: Problemi con una relazione d'ordine

    Weierstrass ha scritto:


    Metti il campo giorno, mese e anno come int e giorno_della_settimana come enum (informazione accessoria).
    
    int ordine(metropoli m1, metropoli m2){
        return (m1.anno << 9) + (m1.mese << 5) + m1.giorno - (m2.anno << 9) - (m2.mese << 5) - m2.giorno;
    }
    
    Ti allego la traccia dell'esercizio, forse sono io che la interpreto male ma non chiede l'anno
    1. Acquisizione, da un file precedentemente creato di dati meteo per almeno tre
    città differenti
    i. una riga del file contiene i dati relativi ad una rilevazione
    NomeCittà,Giorno,Mese,Temperatura,Pressione,Umidità separati dal simbolo ‘_’,
    come qui illustrato
    • Bari_Lunedi_Settembre_30_1020_90
    ii. il nome del file deve essere fornito da tastiera dall’utente
    iii. visualizzazione delle rilevazioni raggruppate per medesima città e relativa
    memorizzazione su file distinti, un file per ogni città.
    2. Selezionare i dati che in una relazione d’ordine basata sul criterio <Mese,Giorno> precedono
    uno specifico valore di riferimento
    i. il valore di riferimento <Mese,Giorno> deve essere fornito da tastiera
    ii. visualizzazione e memorizzazione sul file di output Prima.txt dei dati selezionati
  • Re: Problemi con una relazione d'ordine

    Dillo che è un esercizio...

    Allora cambia la traccia e risolvilo col giorno indicato come numero. Le tracce degli esercizi mica vengono scritte dagli dei della programmazione: sono umani e sbagliano come tutti
  • Re: Problemi con una relazione d'ordine

    Weierstrass ha scritto:


    Dillo che è un esercizio...

    Allora cambia la traccia e risolvilo col giorno indicato come numero. Le tracce degli esercizi mica vengono scritte dagli dei della programmazione: sono umani e sbagliano come tutti
    Hahahahaha, concordo totalmente sull'ultima parte, però era la vecchia traccia di un esame che devo fare a breve e stavo provando a risolverlo così com'era. Invece per il punto 1.3 (iii. visualizzazione delle rilevazioni raggruppate per medesima città e relativa
    memorizzazione su file distinti, un file per ogni città.), avresti dei suggerimenti?
Devi accedere o registrarti per scrivere nel forum
11 risposte