Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [C] Typedef / Vettori di strutture annidate

    Ciao a tutti.
    Ci ho provato in tutti i modi ma nulla.
    Ho il seguente codice:

    #define N 20


    typedef struct{
    int ora;
    int minuto;
    int secondo;

    } Orario;


    typedef struct {
    Orario partenza;
    Orario arrivo;
    } Tempi;


    typedef Tempi Risultati[N];
    1 domandaartendo dal presupposto che ho capito come funzionano le strutture e i vettori,è possibile avere un esempio di come inizializzare e accedere a un vettore proprio di tipo Risultati[N] ?
    2 domanda:data la definizione sopra quello che io devo fare è:
    - dichiarare un altro vettore come quello sopra,ma con nome diverso (tral'altro non ho capito:Risultati[N] è un vettore o un tipo? Se è un tipo come inizializzo un vettore che contiene proprio i Tempi (formati da orario e partenza)?
    - Un esempio di come accedere e modificare un elemento (Es: partenza.ora) del nuovo vettore?

    Spero di essermi spiegato bene.
    Ho provato a dichiarare i vettori in ogni modo,a definire altre strutture,ma vengono fuori errori in fase di compilazione del tipo "Il membro non appartiene alla struttura" o "errore di sintassi prima del ] in vett[n].arrivo.ora,dichiarato come Risultati vett;")

    Grazie in anticipo per qualunque delucidazione sul mio quesito e sull'uso dei vettori di strutture annidate insieme a typedef.
    Ciao

    p.s.per favore,se è possibile senza usare puntatori

  2. #2

    Re: [C] Typedef / Vettori di strutture annidate

    Originariamente inviato da Drag09876
    1 domandaartendo dal presupposto che ho capito come funzionano le strutture e i vettori,è possibile avere un esempio di come inizializzare e accedere a un vettore proprio di tipo Risultati[N] ?
    Così dovrebbe andare:

    Codice PHP:
    #include <stdio.h>

    #define N 20

    typedef struct{
        
    int ora;
        
    int minuto;
        
    int secondo;
    Orario;


    typedef struct {
        
    Orario partenza;
        
    Orario arrivo;
    Tempi;

    typedef Tempi Risultati[N];

    int main()
    {
        
    Risultati r;
        
    int i;
        
        for(
    0Ni++)
        {
            
    r[i].partenza.ora i+1;
            
    r[i].partenza.minuto i+2;
            
    r[i].partenza.secondo i+3;
            
            
    r[i].arrivo.ora i+4;
            
    r[i].arrivo.minuto i+5;
            
    r[i].arrivo.secondo i+6;
        }
        
        for(
    0Ni++)
        {        
            
    Orario p r[i].partenza;
            
    Orario a r[i].arrivo;
            
            
    printf("%d/%d/%d\t%d/%d/%d\n"p.secondop.minutop.oraa.secondoa.minutoa.ora);
        }


    2 domanda:data la definizione sopra quello che io devo fare è:
    - dichiarare un altro vettore come quello sopra,ma con nome diverso (tral'altro non ho capito:Risultati[N] è un vettore o un tipo? Se è un tipo come inizializzo un vettore che contiene proprio i Tempi (formati da orario e partenza)?
    Risultati[N] è un tipo che indica un array di Tempi. Per creare un vettore di N elementi, o crei una variabile di tipo Risultati oppure eviti il typedef e crei un Tempi[N]

    codice:
    Risultati arr_1;
    Tempi arr_2[N];

    - Un esempio di come accedere e modificare un elemento (Es: partenza.ora) del nuovo vettore?
    codice:
    arr_2[0].partenza.ora = 23;

  3. #3
    Puoi spiegare in modo più chiaro "Per creare un vettore di N elementi, o crei una variabile di tipo Risultati oppure eviti il typedef e crei un Tempi[N]" per favore?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non usare quel typedef ... è fonte di confusione.

    Se devi usare un array, scrivi

    Tempi array[N];
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Purtroppo credo di non avere scelta...è un'esercizio corretto in automatico per l'università (l'esercizio in realtà chiede altro e non solo di dichiarare un array,ma la base è quella e il codice che ho messo all'inizio del primo messaggio e fornito come file da includere)

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Drag09876
    ... l'università ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    ??
    non riesci a spiegarmi quelle 2 righe (3 messaggio della discussione)?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... o usi la typedef o fai come hai fatto ... questo vuol dire ... ma dato che devi usare la typedef ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Originariamente inviato da Drag09876
    Puoi spiegare in modo più chiaro "Per creare un vettore di N elementi, o crei una variabile di tipo Risultati oppure eviti il typedef e crei un Tempi[N]" per favore?
    Come ti ha detto oregon, di solito si evitano typedef come quelli e crei il vettore con "Tempi x[N]", come fartesti per un array di int, ad esempio.
    Se devi necessariamente usare il typedef e devi creare un nuovo array di Tempi, di dimensione N, semplicemente dichiari una nuova variabile Risultati

    codice:
    Risultati x;
    Risultati y;
    e li utilizzi come ti ho fatto vedere prima.

  10. #10
    Adesso mi è molto più chiaro.
    Grazie 1000

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 © 2025 vBulletin Solutions, Inc. All rights reserved.