Dinamički niz

1

Dinamički niz

offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Dobio sam program koji treba da izmenim tako da koristi dinamički niz za objekte. Deo koda mi je dat, kao i deo koda koj novi program mora da sadrži. Evo do čega sam ja došao

//This program creates student objects //and computes their average grade point averages #include <iostream> #include <iomanip> using namespace std; class Student { private: int IDNumber; double gpa; public: Student(const int i, const double g); friend double operator+(const Student &, const Student &); }; Student::Student(const int id, const double g) { Student::IDNumber = id; Student::gpa = g; } double operator+(const Student &stud1, const Student &stud2) { double sum, average; sum = stud1.gpa + stud2.gpa; return(sum); } int main() { int size; cout << "How many students do you want to process? "; cin >> size; Student *stud = new Student[size]; stud[0] = Student(2,2); //creates a pointer to array of objects //double average = (stud[1] + stud[2]) / size; //cout << setiosflags(ios::fixed | ios::showpoint); //cout.precision(2); //cout << "Average is " << average << endl; }

Dakle imam klasu Student i unutar nje constructor.
U samo programu bih trebalo da definišem dužinu niza.

int size; cout << "How many students do you want to process? "; cin >> size; Student *stud = new Student[size]; stud[0] = Student(2,2); //creates a pointer to array of objects

To je taj deo koda. Greška je u toj četvrtoj liniji. Zar taj kod ne bi trebalo da rezerviše memoriju za "size" broj objekata tipa Student?

Za sada me ne interesuje ostatak programa, već samo hoću da pokrenem ovo sa mrtve tačke, a ostalo mislim da mogu sam napraviti.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

Probaj da koristis STL pokusaj tako ili deklariši niz proizvoljnog broja
Mislim da bi moglo da uspe.Nista ti ne garantujem dajem primer



offline
  • pixxel  Male
  • Legendarni građanin
  • Pridružio: 21 Jun 2005
  • Poruke: 9091
  • Gde živiš: Tu i tamo...

@Balksnac:
1. Ovaj deo koda u deklaraciji:
public: Student(const int i, const double g);bi trebalo da glasi ovako:public: Student(const int id, const double g); (napisao si int i a unutar konstruktora radis sa id)
2. Ako se dobro secam c++ -a (a ne secam se, jer ce da me neko ko ga dobro zna da me izispravlja samo tako Wink ), ovde ti ne valja konstruktor.
kad kazes new Student, a ne navedes u zagradi ono sto si zadao u konstruktoru, sta ce on da napravi?
(kazes new Student, a deklaracija je Student(const int id, const double g) )
Treba ti neki default konstruktor, da opises sta da radi ako NE NAVEDES id i g...

@Ivan: ako dobije kod koji je bio i kod koji mora da bude, onda ne sme da menja kako mu se prohte, pogotovo da ubacuje stl i ostala cuda. Verovatno mora da ga uradi u cistom c++...

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

pixxel ::@Balksnac:
1. Ovaj deo koda u deklaraciji:
public: Student(const int i, const double g);bi trebalo da glasi ovako:public: Student(const int id, const double g); (napisao si int i a unutar konstruktora radis sa id)
2. Ako se dobro secam c++ -a (a ne secam se, jer ce da me neko ko ga dobro zna da me izispravlja samo tako Wink ), ovde ti ne valja konstruktor.
kad kazes new Student, a ne navedes u zagradi ono sto si zadao u konstruktoru, sta ce on da napravi?
(kazes new Student, a deklaracija je Student(const int id, const double g) )
Treba ti neki default konstruktor, da opises sta da radi ako NE NAVEDES id i g...

@Ivan: ako dobije kod koji je bio i kod koji mora da bude, onda ne sme da menja kako mu se prohte, pogotovo da ubacuje stl i ostala cuda. Verovatno mora da ga uradi u cistom c++...


@***Ja sam samo predpostavio ne znam C++ u full-u i samo sam dao primer da pokusa nista ne gubi a nisam isto hteo opsirnije da me ostali iskusniji ne bi ispravljali!!!Pokusao sam koliko toliko da mu pomognem!!!

offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

@pixxel
To je samo prototip i ne bi trebalo da je do toga problem. Ipak, probao sam, ali i dalje je problem isti.

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ne poznajem bas nesto C++ sintaksu, ali gde je ovde konstruktor klase koji prihvata integer kao parametar?
Student *stud = new Student[size];
Ako ja razumem ovu sintaksu, onda ovde pozivas konstruktor i prosledjujes mu parametar size
Pre toga, gore u definiciji same klase nigde nemas konstruktor koji bi prihvatio taj size

Ovo je jedino sto mi pada na pamet, mada mozda gresim u potpunosti posto mi je C++ sintaksa potpuno nepoznata.

offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Napisano: 23 Nov 2009 20:41

Početni program je koristio samo dva objekta tipa Student

Student s1(x, y), s2(y,w);

Taj deo koda koji prijavljuje grešku sam dobio kao deo zadatka i u tom obliku se mora koristiti. Moram da preuredim zadatak tako da uz tu liniju definišem dinamički niz proizvoljnje dužine.

Po svim knjigama koje imam (3), ako i na netu sam nailazio na upravo taj način definisanja niza. Prvo se definiše pointer na objekt tipa Student, a onda mu se dodeli dužina size.

Kad napišem
int *stud = new int[size];
nemam tih problema, već se uredno formira dinamički niz celih brojeva dužine size. Nikako ne kontam zašto to ne funkcioniše sa objektom Student, kad je funkcionisalo sa samo dva ista objekta ručno upisana.

Dopuna: 23 Nov 2009 20:47

@bobby

Kad se prosledjuje parametar koristi se (). Ovde definišem dužinu niza, a paramtre posle prosledjujem na stud[0], stud[1]...

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Nesto sada gledam...

U implementaciji Student::Student nema definisan tip rezultata (tebi treba void).
Onda, operator+ nije implementiran u sklopu klase (Student::operator+) mada je gore definisan kao metoda klase.

Opet, ja ciljam u mraku, posto ne poznajem C++ sintaksu.

offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Student::Student je konstruktor clase Student. Kod konstruktora ne postoji tip.

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ja sam to uporedjivao nesto sa ovim ovde:
http://www.gamedev.net/community/forums/topic.asp?topic_id=422845

Ko je trenutno na forumu
 

Ukupno su 872 korisnika na forumu :: 38 registrovanih, 5 sakrivenih i 829 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Apok, Atomski čoban, bokisha253, Boris BM, BORUTUS, debeli, Dimitrije Paunovic, Dimitrise93, DPera, Fog of War, Georgius, herrDule, Jahorina, Karla, Kibice, Kubovac, Leonov, mercedesamg, Mi lao shu, milos.cbr, MiroslavD, Mixelotti, moldway, pein, Petarvu, procesor, radoznao, Romibrat, Smajser, stegonosa, Stoilkovic, Trpe Grozni, uruk, vasa.93, vlahale, yufighter, ZetaMan, šumar bk2