U ovom semestru sam počeo sa radom u C++, i dobio sam prvi zadatak za odbranu semestra i to mi je uslov da bih mogao da izađem na ispit. Tekst zadatka je:
Napisati klasu Student i klasu Predmet.
Klasa Student sadrzi atribute:
Ime -string[10]
prezime -string[15]
indeks -ceo broj
Realizovati
Konstruktor bez argumenata
Konstruktor sa argumentima (ime,prezime,indeks)
set i get metode
predstavi se metoda koja ispisuje podatke o studentu
Klasa Predmet sadrzi atribute: ime_prof -string[10]
prezime_prof -string[15]
broj_studenata -ceo broj
studenti -dinamicki niz studenata koji slusaju predmet
ocene -dinamicki niz ocena za svakog gore navedenog studenta
Realizovati:
Konstruktor bez argumenata (postavlja broj studenata na 10)
Konstruktor sa jednim argumentom broj studenata n
Kopi konstruktor
void ucitaj_studente (int n) //metoda za ucitavanje prvih n studenata tako sto see navodi njihovo ime prezime i broj indeksa
void ucitaj_ocene(int n) //metoda koja ucitava ocene prvih n studenata
void setStudent(int k,Student s,int ocena)
set i get metoda za ime i prezime profesora
void prebroj(); //metoda koja prebrojava broj 5(0),6,7,8,9 i 10
int polozilo(); //metoda koja ispisuje predmet ime i prezime profesora a zatim svakom novom redu ime i prezime, broj studenata koji su polozili ispit
Student najStudent(); //metoda koja vraca prvog studenta sa maksimalnom ocenom
A ono sto sam dosad uradio je:
#include <iostream>
#include <cstring>
class CStudent {
private:
char* ime;
char* prezime;
int index;
public:
CStudent(){ strcpy(ime,0); strcpy(prezime,0); }
CStudent(const char* i, const char* p, int ind);
~CStudent();
void setIme(const char* _ime);
void setPrezime(const char* _prezime);
void setIndex( int _index );
char* getIme();
char* getPrezime();
int getIndex();
void ispisi();
};
CStudent::CStudent( const char* i, const char* p, int ind ) {
ime = new char [10];
prezime = new char [15];
strcpy(ime, i);
strcpy(prezime, p);
index = ind;
}
CStudent::~CStudent() {
delete ime;
delete prezime;
}
void CStudent::setIme( const char* _ime ) {
strcpy(ime, _ime);
}
void CStudent::setPrezime( const char* _prezime ) {
strcpy(prezime, _prezime);
}
void CStudent::setIndex( int _index ) {
index = _index;
}
char* CStudent::getIme() {
return ime;
}
char* CStudent::getPrezime() {
return prezime;
}
int CStudent::getIndex() {
return index;
}
void CStudent::ispisi() {
cout << ime << " " << prezime << " " << index << endl;
}
class CPredmet {
private:
char* imeProfesora;
char* prezimeProfesora;
int brojStudenata;
CStudent* studenti;
int* ocene;
public:
CPredmet();
CPredmet( int bs );
CPredmet( const CPredmet& param );
~CPredmet();
void setImeProfesora( const char* _imeProfesora );
void setPrezimeProfesora( const char* _prezimeProfesora );
void ucitajStudente( int n );
void ucitajOcene( int n );
void setStudent( int k, CStudent s, int o );
void prebroj();
char* getImeProfesora();
char* getPrezimeProfesora();
int polozilo();
int najStudent();
};
CPredmet::CPredmet() {
imeProfesora = new char [10];
prezimeProfesora = new char [15];
brojStudenata = 10;
studenti = NULL;
ocene = NULL;
}
CPredmet::CPredmet( int bs ) {
imeProfesora = new char [10];
prezimeProfesora = new char [15];
brojStudenata = bs;
studenti = new CStudent [brojStudenata];
ocene = new int [brojStudenata];
}
CPredmet::CPredmet( const CPredmet& param) {
imeProfesora = new char [10];
prezimeProfesora = new char [15];
brojStudenata = param.brojStudenata;
studenti = new CStudent [brojStudenata];
ocene = new int [brojStudenata];
strcpy( imeProfesora, param.imeProfesora ); /* ne moras da koristis getMetodu */
strcpy( prezimeProfesora, param.prezimeProfesora );
for( int i=0; i<brojStudenata; i++ ) {
studenti.setIme( param.studenti.getIme() );
studenti.setPrezime( param.studenti.getPrezime() );
studenti.setIndex( param.studenti.getIndex() );
ocene = param.ocene;
}
}
CPredmet::~CPredmet() {
delete imeProfesora;
delete prezimeProfesora;
delete studenti;
delete ocene;
}
void CPredmet::setImeProfesora( const char* _imeProfesora ) {
strcpy( imeProfesora, _imeProfesora );
}
void CPredmet::setPrezimeProfesora( const char* _prezimeProfesora ) {
strcpy( prezimeProfesora, _prezimeProfesora );
}
void CPredmet::ucitajStudente( int n ) {
if( studenti == NULL ) {
brojStudenata = n;
studenti = new CStudent [brojStudenata];
ocene = new int [brojStudenata];
}
cout<<"Unesite broj studenata "<<n<<endl;
for( int i=0; i<n; i++ ) {
char _ime[10], _prezime[15];
int _index;
cin >> _ime >> _prezime >> _index;
studenti.setIme(_ime);
studenti.setPrezime(_prezime);
studenti.setIndex(_index);
}
delete []ocene;
}
void CPredmet::ucitajOcene( int n ) {
if( ocene == NULL ) {
n=10;
ocene = new int [n];
}
for( int i=5; i<n; i++ ) { // opseg ocena od 5 do 10
int o;
cin>>o;
ocene = o;
cout<<" "<<ocene;
}
delete []ocene;
}
void setStudent( int k, CStudent s, int o ){
k=1;
cout<<"unesi ocenu za prvog studenta: ";
cin>>o;
}
char* CPredmet::getImeProfesora() {
return imeProfesora;
}
char* CPredmet::getPrezimeProfesora() {
return prezimeProfesora;
}
int CPredmet::polozilo(){
int i;
for(i=1;i<brojStudenata;i++)
if(ocene>5){
cout<<" je polozio kod profesora: "<<imeProfesora<<" "<<prezimeProfesora<<endl;
return 1;
}
else
{
cout<<" nije polozio kod profesora: "<<imeProfesora<<" "<<prezimeProfesora<<endl;
return 0;
}
}
int CPredmet::najStudent(){
int i;
for(i=1;i<brojStudenata;i++)
if(ocene == 10)
return 1;
else return 0;
}
int main()
{
CStudent student1("Djordjo","Kijelini",256),student2("Mirko", "Vucinic", 123);
student1.ispisi();student2.ispisi();
CStudent student3("Milos","Krasic",369);
student3.ispisi();
CPredmet predmet1;
predmet1.setImeProfesora("Bratislav");
predmet1.setPrezimeProfesora("Miric");
cout << predmet1.getImeProfesora() << " " << predmet1.getPrezimeProfesora() << endl;
predmet1.ucitajStudente(3);
predmet1.ucitajOcene(3);
cout<<"Student "<<student1.getIme()<<" "<<student1.getPrezime()<<" ";
cout<<predmet1.polozilo()<<endl;
cout<<"Student "<<student2.getIme()<<" "<<student2.getPrezime()<<" ";
cout<<predmet1.polozilo()<<endl;
cout<<"Student "<<student3.getIme()<<" "<<student3.getPrezime()<<" ";
cout<<predmet1.polozilo()<<endl;
if(predmet1.najStudent())
cout<<"Student "<<student1.getIme()<<" je dobio 10 iz predmeta: "<<endl;
else
cout<<"Student "<<student1.getIme()<<" nije dobio 10 iz predmeta: "<<endl;
if(predmet1.najStudent())
cout<<"Student "<<student2.getIme()<<" je dobio 10 iz predmeta: "<<endl;
else
cout<<"Student "<<student2.getIme()<<" nije dobio 10 iz predmeta: "<<endl;
if(predmet1.najStudent())
cout<<"Student "<<student3.getIme()<<" je dobio 10 iz predmeta: "<<endl;
else
cout<<"Student "<<student3.getIme()<<" nije dobio 10 iz predmeta: "<<endl;
return 0;
}
E sad problem je u tome što za niz studenata ne učitava ocenu za svakog studenta u tom nizu pa samim tim na izlazu ne ispisuje metodu najstudent i metodu položio. Svaka pomoć mi je dobro došla jer sam početnik u ovom programskom jeziku i izvinjavam se na nepreglednosti posta to jest preobimnosti.