Problema c++ : Struct di struct

Pubblicità

Nev

Utente Attivo
Messaggi
44
Reazioni
0
Punteggio
26
Buonasera a tutti. ho un problema a far girare il mio programma in c++.

Devo fare un programma per la gestione degli scaffali di una biblioteca, Vi articolo in modo sintetico le richieste

In questa biblioteca ci sono tanti scaffali (numero definito dall'utente) con al loro interno dei libri ( al massimo 10 ) e ogni libro possiede un titolo e un argomento.

ho pensato di fare una struct per i libri con dentro titolo e argomento, e una struct per gli scaffali che a loro volta contengono i libri e un contatore che serve a me per contare il numero dei libri per ogni scaffale.

Come posso dichiarare questa struttura di struttura? Io ho fatto così ma il compilatore mi da errore

CODICE C++
struct scaff { struct book {
char titolo[max] ,
argomento[max] ;
} libro[max_libri];
int c_libro = 0 ; //Contatore numero libro
}scaffale[max_lettere];

Fine codice

Come mai non funziona? avete qualche consiglio? Grazie in anticipo
 
Togli l'inizializzazione di c_libro :)

Ok, e dove lo inizializzo?

Conta che ogni scaffale ha il suo contatore. Quindi deve essere specifico per ogni scaffale. Per questo l'ho messo nella struct scaff

comunque grazie del consiglio.

Ho provato a fare in questo modo

struct book {
char titolo[max];
char argomento[max];
};

struct scaff {
book libro[max_libri];
int c_libro;
};

scaff scaffale[max_lettere];
scaffale.c_libro = 0;

così invece il terminale mi dice error: request for member ‘c_libro’ in ‘scaffale’, which is of non-class type ‘main()::scaff [24]’

Consigli?
 
La variabile scaffale, come l'hai dichiarata te, è un vettore: dunque devi specificare la posizione dell'elemento al quale vuoi azzerare il contatore! Ossia qualcosa del tipo:

Codice:
scaffale[indice].c_libro = 0;

Quindi, se all'inizio del tuo programma, vuoi impostare che tutti gli scaffali abbiano 0 libri, fai un ciclo che scorre il vettore e imposta a 0 il campo di ogni singolo scaffale:

Codice:
for(i = 0; i < max_lettere; i++)
    scaffale[i].c_libro = 0;

Spero di essere stato chiaro :)
 
La variabile scaffale, come l'hai dichiarata te, è un vettore: dunque devi specificare la posizione dell'elemento al quale vuoi azzerare il contatore! Ossia qualcosa del tipo:

Codice:
scaffale[indice].c_libro = 0;
Quindi, se all'inizio del tuo programma, vuoi impostare che tutti gli scaffali abbiano 0 libri, fai un ciclo che scorre il vettore e imposta a 0 il campo di ogni singolo scaffale:

Codice:
for(i = 0; i < max_lettere; i++)
    scaffale[i].c_libro = 0;
Spero di essere stato chiaro :)

Molto chiaro... Limpido! Grazie mille. molto gentile
 
Pubblicità
Pubblicità
Indietro
Top