PDA

Visualizza la versione completa : [C++] Problemi Struct


kirakira93
19-02-2010, 20:30
Ciao ragazzi: non fatevi impressionare dalla grandezza il codice è molto semplice:

Quando stampo non capisco perchè il primo valore stampato è 99 anche se io avevo scritto che era uguale a 0....




const int NumeroOre = 4, NumeroGiorni = 5, NumeroCorso = 0, MaxProfPerCorso = 4;

struct S_Professori{

struct TotaleProfessori{int Professore[MaxProfPerCorso];


}
Disponibili [NumeroOre][NumeroGiorni][NumeroCorso];


struct TotaleProfessore{int Professore[MaxProfPerCorso];


}

Eccezzioni [NumeroOre][NumeroGiorni][NumeroCorso],
Preferenze [NumeroOre][NumeroGiorni][NumeroCorso],
Obblighi [NumeroOre][NumeroGiorni][NumeroCorso],
TestFalliti [NumeroOre][NumeroGiorni][NumeroCorso],
GiornoLibero[NumeroOre][NumeroGiorni][NumeroCorso];

}Ore60;

S_Professori Intersezione (int, int, int);


int main(int argc, char *argv[])
{
Ore60.Disponibili[3][6][5].Professore[0] = 1;
Ore60.Disponibili[3][6][5].Professore[1] = 2;
Ore60.Disponibili[3][6][5].Professore[2] = 3;

Ore60.Eccezzioni [3][6][5].Professore[0] = 99;


//Intersezione(3,6,5);

cout << Ore60.Disponibili[3][6][5].Professore[0] << endl;
cout << Ore60.Disponibili[3][6][5].Professore[1] << endl;
cout << Ore60.Disponibili[3][6][5].Professore[2] << endl;
cout << Ore60.Eccezzioni[3][6][5].Professore[0] << endl;

system("PAUSE");
return 0;
}

oregon
19-02-2010, 20:39
1) non ho capito il problema

2) questo valore

NumeroCorso = 0

non ha senso

3) Eccezioni si scrive con una sola z ...

kirakira93
19-02-2010, 20:48
Allora: il valore 0 ha senso perchè in seguito diventerà un cifra dopo il 15.
Comunque perchè mi stampa

Ore60.Disponibili[3][6][5].Professore[0] = 99

quando avevo scritto



Ore60.Disponibili[3][6][5].Professore[0] = 1;

oregon
19-02-2010, 21:33
Originariamente inviato da kirakira93
Allora: il valore 0 ha senso perchè in seguito diventerà un cifra dopo il 15.

Eh? Non ho capito ...

Il valore 0 non ha senso perchè una dimensione non può avere 0 elementi ... e infatti il compilatore "non compila" ... non capisco come faccia il tuo a farlo ...


Comunque perchè mi stampa

Ore60.Disponibili[3][6][5].Professore[0] = 99

quando avevo scritto



Ore60.Disponibili[3][6][5].Professore[0] = 1;


A me fornisce i valori corretti ...

kirakira93
20-02-2010, 18:58
Forse è propio quello 0 che manda in balla il compilatore
Però non capisco: se io cambio il valore di
Ore60.Disponibili[3][6][5].Professore[2]

è normale che assegni lo stesso valore a tutti gli altri?
Cioè a
Ore60.Eccezzioni [3][6][5].Professore[0]
Ore60.Obblighi [3][6][5].Professore[0]
Ore60.TestFalliti [3][6][5].Professore[0]
Ore60.GiornoLibero [3][6][5].Professore[0]


!!!!!

Adesso che guardo il codice mi viene da pensare e se il compilatore facesse questo perchè io accedo al campo 5 del terzo vettore quando ci sono solo 1 posto [0]
Avevi ragione NON HA SENSO!

oregon
20-02-2010, 19:13
Originariamente inviato da kirakira93
Avevi ragione NON HA SENSO!

Ti ripeto ... 0 non ha senso ... Devi indicare un valore maggiore di 0 per dimensionare la tua matrice ...

kirakira93
21-02-2010, 17:48
Grazie oregon... sei una bestia, ora va tutto cambiando lo zero in 1!

Loading