[ Konstantin91 @ 18.04.2012. 13:43 ] @
Konkretno problem je sto hocu da u jednom clanu strukture koristim niz koji ce broj elemenata da "dohvati" iz prethodno definisanog clana... Evo kako to izgleda

struct S {
char s[MAX];
int brojindeksa;
int brojpolispita;
int sifrepolispita[S::brojpolispita];
int ocenepolispita[S::brojpolispita];

}
int main()
{
int n;
typedef struct S s;
printf("\nUnesite broj studenata (n<=200)\n");
scanf("%d", &n);
fflush(stdin);
s student[n];
system("PAUSE");
}

U oba slucaja mi kaze "expression must have a constant value" , u pitanju je C a ne C++ dok mi je okruzenje u kojem radim Visual Studio...
Ne razumem zasto pravi problem, kaze mi da vrednost nije konstantna, cak mi pravi problem i kasnije kada definisem niz ovakvih struktura gde ce broj istih da predstavlja promenljiva n tipa int koju unosim preko scanf-a, tu tek ne vidim zasto pravi problem ????
[ deerbeer @ 18.04.2012. 13:48 ] @
Ne mozes generisati nizove na stack-u cija velicina nije poznata u compile-time-u.
Dakle moras kreirati niz na heap-u.
Code:

s *student = new s[n]; 
[ Konstantin91 @ 18.04.2012. 14:00 ] @
Ok to sam shvatio...
Primer koji si mi dao nisam shvatio...

Koliko sam upoznat HEAP je deo memorije rezervisan za dinamicku dodelu, pa ako dinamicki dodelim memoriju memoriju za niz struktura to ce biti reseno, evo probao sam i ne pokazuje mi gresku ali i dalje ostaje problem gore u samom pocetku definisanja strukture

struct S {
char s[MAX];
int brojindeksa;
int brojpolispita;
int sifrepolispita[S::brojpolispita];
int ocenepolispita[S::brojpolispita];

}
int main()
{
int n;
typedef struct S s;
printf("\nUnesite broj studenata (n<=200)\n");
scanf("%d", &n);
fflush(stdin);
s *student; /*problem resen sto se ovoga tice*/
student=(s*)malloc(n*sizeof(struct S))
system("PAUSE");
}
[ djoka_l @ 18.04.2012. 14:14 ] @
Koji deo rečenice "expression must have a constant value" ti nije jasan.

Kao što ti je deerbeer rekao, moraš da alociraš memoriju, isto kao što si alocirao za niz čiji su elementi struktura. 1 je konstanta 200+300 je konstanta, ali "brojpolispita" ja VARIJABLA. Kako kompajler da zna koji ćeš broj da staviš u svaku od varijabli brojpolispita i to još u momentu kada se program kompajlira???