PDA

View Full Version : [C] qualcuno sa spiegarmi cm si risolve??


fraalba
07-06-2008, 11:38
ciao a tutti,lunedì ho l'esame di informatica,guardando le prove d'esame ho trovato in tutte esercizi di questo tipo:
Sia data la seguente espressione C esibire una dichiarazione che la rende possibile, altrimenti motivare l’impossibilità:
x.a[3].b = x.a[4].c[1]


qualcuno sa spiegrami in modo semplice cm si risolve???? e soprattutto perchè da questo risultato???
typedef struct {int b, c[3];} INTE;
typedef struct {INTE a[6];} A;
A x;
nn ci capisco niente

Albi89
07-06-2008, 12:31
Non è un esercizio difficile, devi solo ragionare un po'...
Ad esempio, sai che x è una struttura, ed il suo campo a è a sua volta una struttura che deve avere almeno due campi: b e c, che è un array.

Per semplicità facciamo finta che si tratti di interi (in ogni caso il tipo della variabile b e dell'array c devone essere compatibile poichè c'è "in ballo" un'assegnazione).

Dunque la prima cosa da fare è definire la struct più interna:
typedef struct Interna {
int b;
int c[10]; //O comunque un numero a tuo piacere;
} Interna;

Poi però dovrai incapsularla in una struttura esterna:
typedef struct Esterna {
Interna a[10]; //Anche qui puoi usare un numero a piacere
} Esterna;

Ora devi solo dichiarare:
Esterna x;

E vedrai che tutto ha senso:
x.a accede all'array "Interna a[10]", di cui ogni elemento contiene un campo b intero ed un campo c array di interi.
Quindi hanno senso tanto x.a.b, tanto x.a.c[i].
Tra l'altro, il tipo di c e il tipo di b sono compatibili e dunque x.a[3].b = x.a[4].c[1] è corretto :fagiano:

fraalba
07-06-2008, 17:57
grazie milla!!l'ho capito adesso:-)

fraalba
07-06-2008, 17:58
mille nn milla:-)