+ Rispondi
Risultati da 1 a 9 di 9

Discussione: definire una matrice

  1. #1
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    14

    definire una matrice

    Ciao,

    come posso definire una matrice "RilevazioniSettimanali" fuori dal main di tipo "Sensore"(struttura).ho pensato di scrivere:

    typedef struct{
    int temperatura;
    int...;
    } Sensore;
    typedef Sensore RilevazioniSettimanali[7][6];

    ma poi non so come assegnare alle righe e alle colonne il tipo di dato!!!

  2. #2
    Moderatore Globale L'avatar di M.A.W. 1968
    reputazione complessiva: 19 19

    Messaggi
    373
    Blogs
    14
    La sintassi per l'accesso a membri di strutture organizzate in array è identica alla dot notation normalmente utilizzata per le singole strutture.

    Laddove quindi si usa
    Codice:
    Sensore.temperatura = 25;
    Allo stesso modo, si scriverà
    Codice:
    RilevazioniSettimanali[3][0].temperatura = 27;
    Tutto qui, se non si intende ricorrere a puntatori o strutture d'appoggio (che semplificano notevolmente la scrittura).

    Voglio comunque sperare che tu stia studiando il linguaggio C su un serio testo di riferimento, nel quale queste banalità sintattiche sono chiarite in modo inequivocabile.

    Il forum non può e non deve sostituire lo studio individuale degli elementi di base del linguaggio.
    Tutti gli utenti sono pregati di prendere visione del Regolamento del Forum e di rispettarlo.

    Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...

    • "Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk." (Leopold Kronecker)
    • "A Mathematician is a machine for turning coffee into theorems." (Pal Erdös)
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

  3. #3
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    14
    Sto studiando dal libro consigliato dal prof:"C corso completo di programmazione" (Harvey M. Deitel).
    La mia domanda non era questa..forse mi sono spiegata male!!!!so benissimo come accedere ad un array in una struttura..il problema è che sto svolgendo un esercizio che mi chiede di
    Costruire un programma in C per la elaborazione di rilevazioni giornaliere di temperatura e umidità. In particolare si chiede di:
    1.Definire GiornoSettimanale come tipo enumerativo con valori: lun, mar, mer, gio, ven, sab, dom.
    2.Definire Provincia come tipo enumerativo con valori: Bari, Bat, Brindisi, Foggia, Lecce, Taranto.
    3.Definire Valore come tipo enumerativo con valori: alto, basso.
    4.Definire il tipo Sensore come struttura i cui campi sono temperatura di tipo reale e umidita di tipo Valore.
    5.Definire il tipo RilevazioniSettimanali come matrice (7x6) di tipo Sensore le cui righe rappresentano le occorrenze distinte del tipo GiornoSettimanale e le colonne rappresentano le occorrenze distinte del tipo Provincia.
    Il mio problema è il punto 5..nel mio studio non ho mai incontrato la definizione di una matrice fuori dal main..e vorrei sapere se esiste una procedura particolare.
    Ho provato con:

    typedef Sensore RilevazioniSettimanali[7][6];

    ma poi ho problemi quando mando la matrice alle funzioni perchè il compilatore non riconosce il tipo RilevazioniSettimanali.
    Se la richiesta non fosse quella io definirei la matrice di tipo sensore nel main e il problema sarebbe risolto.
    Sono stata più chiara adesso?..grazie!!!

  4. #4
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    130
    Puoi sempre definire i tuoi tipi in un file header che poi includerai nel modulo principale, dopodichè puoi dichiarare quello che ti serve nel main.
    "Fatti non foste per viver come bruti, ma per seguire virtute e conoscenza."
    "Hack to learn, not to steal."
    "In un mondo di ciechi, chi ha un occhio solo è un Re"

  5. #5
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    14
    Non abbiamo studiato i file..siamo arrivati alle strutture e poi ci siamo fermati!!!non esiste nessun altro modo?
    Io ho pensato che esiste, in analogia al caso dei vettori.
    Se avessi dovuto definire un vettore invece che una matrice avrei scritto:
    typedef Sensore RilevazioniSettimanali[7];
    Non esiste un analogo?

  6. #6
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    130
    Non c'è bisogno di funzioni di files, se è quello che intendi. Comunque, tu puoi definire tutto quello che vuoi fuori dal main, poi dichiari l'occorrenza della tua variabile nel main.
    Noto comunque solo ora una cosa che mi sembra un errore:
    Dopo che tu dichiari la tua struttura e chiami il tipo Sensore, per crearne un'occorrenza basterà
    Codice:
    Sensore RilevazioniSettimanali[7][6];
    anzichè

    Codice:
    typedef Sensore RilevazioniSettimanali[7][6];
    "Fatti non foste per viver come bruti, ma per seguire virtute e conoscenza."
    "Hack to learn, not to steal."
    "In un mondo di ciechi, chi ha un occhio solo è un Re"

  7. #7
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    14
    Ma ho bisogno di assegnare un nome al tipo di matrice in modo da poter definire una matrice (ad esempio tabulato) di tipo RilevazioniSettimanali nel main.
    "tabulato" poi dovrà essere inviata alle funzioni.

  8. #8
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    130
    Ok, non ho il compilatore sotto mano per fare delle prove ma...che compilatore usi? Che errori ottieni quando compili? Puoi postare il codice completo per vedere meglio dove puo essere l'inghippo?
    "Fatti non foste per viver come bruti, ma per seguire virtute e conoscenza."
    "Hack to learn, not to steal."
    "In un mondo di ciechi, chi ha un occhio solo è un Re"

  9. #9
    Moderatore Globale L'avatar di M.A.W. 1968
    reputazione complessiva: 19 19

    Messaggi
    373
    Blogs
    14
    Citazione Originariamente Scritto da terry86 Visualizza Messaggio
    Il mio problema è il punto 5..nel mio studio non ho mai incontrato la definizione di una matrice fuori dal main..e vorrei sapere se esiste una procedura particolare.
    Ho provato con:

    typedef Sensore RilevazioniSettimanali[7][6];

    ma poi ho problemi quando mando la matrice alle funzioni perchè il compilatore non riconosce il tipo RilevazioniSettimanali.
    Se la richiesta non fosse quella io definirei la matrice di tipo sensore nel main e il problema sarebbe risolto.
    Sono stata più chiara adesso?..grazie!!!
    Così va molto meglio, grazie.
    Più informazioni si forniscono, maggiore è la speranza matematica di ottenere una risposta utile e risolutiva...

    Il seguente sorgente è stato da me compilato ed eseguito con successo utilizzando separatamente BCC 5.5.1, Visual C++ Express 2009, Open Watcom:
    Codice:
    #include <stdio.h>
    #include <string.h>
    
    typedef enum {lun, mar, mer, gio, ven, sab, dom} GiornoSettimanale;
    typedef enum {Bari, Bat, Brindisi, Foggia, Lecce, Taranto} Provincia;
    typedef enum {alto, basso} Valore;
    
    typedef struct {
        float temperatura;
        Valore umidita;
    } Sensore;
    
    typedef Sensore RilevazioniSettimanali[7][6];
    
    void InserisciDati(RilevazioniSettimanali tab)
    {
        memset(tab, 0, sizeof(tab));
    
        tab[Bari][lun].temperatura = 27.1;
        tab[Bari][lun].umidita = alto;
        tab[Taranto][mar].temperatura = 29.3;
        tab[Taranto][mar].umidita = basso;
        tab[Foggia][mer].temperatura = tab[Bari][lun].temperatura + 2.9;
        tab[Foggia][mer].umidita = basso;
    }
    
    int main(void)
    {
        RilevazioniSettimanali tabulato;
    
        InserisciDati(tabulato);
        
        printf("Bari    lun: temp %.2f°C, umidità %s\n",
               tabulato[Bari][lun].temperatura,
               (tabulato[Bari][lun].umidita == basso ? "bassa" : "alta"));
        
        printf("Taranto mar: temp %.2f°C, umidità %s\n",
               tabulato[Taranto][mar].temperatura,
               (tabulato[Taranto][mar].umidita == basso ? "bassa" : "alta"));
    
        printf("Foggia  mer: temp %.2f°C, umidità %s\n",
               tabulato[Foggia][mer].temperatura,
               (tabulato[Foggia][mer].umidita == basso ? "bassa" : "alta"));
    
        return (0);
    }
    Ultima modifica di M.A.W. 1968; 11-01-2010 alle 21:00
    Tutti gli utenti sono pregati di prendere visione del Regolamento del Forum e di rispettarlo.

    Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...

    • "Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk." (Leopold Kronecker)
    • "A Mathematician is a machine for turning coffee into theorems." (Pal Erdös)
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

+ Rispondi

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi