Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa strukturom...

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem sa strukturom...

[ Pregleda: 1342 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Konstantin91
Konstantin Petrovic
Mladenovac

Član broj: 57918
Poruke: 168
*.bitinfo.rs.



+34 Profil

icon Problem sa strukturom...18.04.2012. u 13:43 - pre 145 meseci
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 ????
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.dynamic.sbb.rs.



+395 Profil

icon Re: Problem sa strukturom...18.04.2012. u 13:48 - pre 145 meseci
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]; 

Viva lollapalooza
 
Odgovor na temu

Konstantin91
Konstantin Petrovic
Mladenovac

Član broj: 57918
Poruke: 168
*.bitinfo.rs.



+34 Profil

icon Re: Problem sa strukturom...18.04.2012. u 14:00 - pre 145 meseci
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");
}
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Problem sa strukturom...18.04.2012. u 14:14 - pre 145 meseci
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???
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem sa strukturom...

[ Pregleda: 1342 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.