u zadatku je potrebno unijeti nekoliko ucenika(ime, prezime, datum rodjenja, ocjene)
i treba de se obrade uneseni podaci a zatim da se sortiraju svi ucenici po prosjeku
i na kraju treba ispisati listu u ovom gdje se jedan ucenik(njegovi podaci) ispisuje ovako
"Ucenik" ime prezime " rodjen " datum rodjenja "ima prosjek" /"treba ponoviti razred" (u koliko je pao)
zadatak je:
Prepraviti prilozeni program tako da se umjesto vectora koristi dinamicki alocirani niz (bibliotku vector je zabranjeno koristiti)
molio bih vas da mi i malo objasnite ako moze (neki mali komentar)
moji pokusaji su bili:
(
Ucenik *ucenici=0;
ucenici=new Ucenik[broj_predmeta];
)
zatim sam izmjenio umjesto size() prenio sam broj ucenika u funkcije kojima je to potrebno ali onda mi tek nastaju problemi
jer ne mogu da skontam sa pokazivacima kad sta prenosim u funkcije (adresu ili vec sta
molim vas da mi pomognete uz male komentare pored da bi napokon mogao shvatiti pokazivace i prenose istih u funkciju
unaprijed hvala!
Code:
#include<string>
#include<vector>
#include<iostream>
#include<cctype>
#include<algorithm>
#include<iomanip>
using namespace std;
const int broj_predmeta(6);
struct Datum
{
int dan,mjesec,godina;
};
struct Ucenik
{
string ime,prezime;
Datum datum_rodjenja;
int ocjene[broj_predmeta];
double prosjek;
bool prolaz;
};
int main()
{
void UU(vector<Ucenik> &ucenici);/*Unesi ucenike*/
void OU(vector<Ucenik> &ucenici);/*obradi ucenike*/
void IU(const vector<Ucenik> &ucenici);/*ispisi ucenike*/
int broj_ucenika;
cout<<"Koliko ima ucenika: ";
cin>>broj_ucenika;
try
{
vector<Ucenik> ucenici(broj_ucenika);
UU(ucenici);
OU(ucenici);
IU(ucenici);
}
catch(...)
{
cout<<"Problemi sa memorijom!!!";
}
system("pause");
return 0;
}
void UU(vector<Ucenik> &ucenici)
{
void UJU(Ucenik &ucenik);/*Unos jednog uccenika*/
for(int i(0);i<ucenici.size();i++)
{
cout<<"Unesite podatke"<<i+1<<". ucenika: ";
UJU(ucenici[i]);
}
}
void UJU(Ucenik &ucenik)
{
void UD(Datum &datum);
void UO(int ocjene[],int bp);
cout<<"ime: "; cin>>ucenik.ime;
cout<<"prezime: ";cin>>ucenik.prezime;
UD(ucenik.datum_rodjenja);/*Unesi datum*/
UO(ucenik.ocjene,broj_predmeta);/*Unesi ocjene*/
}
void UD(Datum &datum)
{
cout<<"Dan rodjenja: ";cin>>datum.dan;
cout<<"Mjesec rodjenja: ";cin>>datum.mjesec;
cout<<"Godina rodjenja: ";cin>>datum.godina;
}
void UO(int ocjene[],int bp) /*unesi ocjene*/
{
for(int i(0);i<bp;i++)
{
cout<<"Ocjena iz "<<i+1<<". predmeta: ";
cin>>ocjene[i];
}
}
void OU(vector<Ucenik> &ucenici)
{
void OJU(Ucenik &ucenik);/*Obradi jednog ucenika*/
bool BP(const Ucenik &u1,const Ucenik &u2);/*bolji prosek*/
for(int i(0);i<ucenici.size();i++)
{
OJU(ucenici[i]);
}
sort(ucenici.begin(),ucenici.end(),BP);
}
void OJU(Ucenik &ucenik)
{
double suma(0);
ucenik.prosjek=1;ucenik.prolaz=false;
for(int i(0);i<broj_predmeta;i++)
{
if(ucenik.ocjene[i]==1)return;
suma+=ucenik.ocjene[i];
}
ucenik.prosjek=suma/broj_predmeta;
ucenik.prolaz=true;
}
bool BP(const Ucenik &u1,const Ucenik &u2)
{
return u1.prosjek > u2.prosjek;
}
void IU(const vector<Ucenik> &ucenici)/*ispisi cenike*/
{
void IJU(const Ucenik &ucenik);/*Ispisi jednog ucenika*/
cout<<endl;
for(int i(0);i<ucenici.size();i++)
IJU(ucenici[i]);
}
void IJU(const Ucenik &ucenik)
{
void ID(const Datum &datum);/*Ispisi datum*/
cout<<"Ucenik "<<ucenik.ime<<" "<<ucenik.prezime<<" rodjen ";
ID(ucenik.datum_rodjenja);
if(ucenik.prolaz)
cout << " ima prosjek " << setw(3) << ucenik.prosjek;
else
cout<<" mora ponavljati razed!";
cout<<endl;
}
void ID(const Datum &datum)
{
cout<<datum.dan<<"."<<datum.mjesec<<"."<<datum.godina;
}
——
#include<string>
#include<vector>
#include<iostream>
#include<cctype>
#include<algorithm>
#include<iomanip>
using namespace std;
const int broj_predmeta(6);
struct Datum
{
int dan,mjesec,godina;
};
struct Ucenik
{
string ime,prezime;
Datum datum_rodjenja;
int ocjene[broj_predmeta];
double prosjek;
bool prolaz;
};
int main()
{
void UU(vector<Ucenik> &ucenici);/*Unesi ucenike*/
void OU(vector<Ucenik> &ucenici);/*obradi ucenike*/
void IU(const vector<Ucenik> &ucenici);/*ispisi ucenike*/
int broj_ucenika;
cout<<"Koliko ima ucenika: ";
cin>>broj_ucenika;
try
{
vector<Ucenik> ucenici(broj_ucenika);
UU(ucenici);
OU(ucenici);
IU(ucenici);
}
catch(...)
{
cout<<"Problemi sa memorijom!!!";
}
system("pause");
return 0;
}
void UU(vector<Ucenik> &ucenici)
{
void UJU(Ucenik &ucenik);/*Unos jednog uccenika*/
for(int i(0);i<ucenici.size();i++)
{
cout<<"Unesite podatke"<<i+1<<". ucenika: ";
UJU(ucenici[i]);
}
}
void UJU(Ucenik &ucenik)
{
void UD(Datum &datum);
void UO(int ocjene[],int bp);
cout<<"ime: "; cin>>ucenik.ime;
cout<<"prezime: ";cin>>ucenik.prezime;
UD(ucenik.datum_rodjenja);/*Unesi datum*/
UO(ucenik.ocjene,broj_predmeta);/*Unesi ocjene*/
}
void UD(Datum &datum)
{
cout<<"Dan rodjenja: ";cin>>datum.dan;
cout<<"Mjesec rodjenja: ";cin>>datum.mjesec;
cout<<"Godina rodjenja: ";cin>>datum.godina;
}
void UO(int ocjene[],int bp) /*unesi ocjene*/
{
for(int i(0);i<bp;i++)
{
cout<<"Ocjena iz "<<i+1<<". predmeta: ";
cin>>ocjene[i];
}
}
void OU(vector<Ucenik> &ucenici)
{
void OJU(Ucenik &ucenik);/*Obradi jednog ucenika*/
bool BP(const Ucenik &u1,const Ucenik &u2);/*bolji prosek*/
for(int i(0);i<ucenici.size();i++)
{
OJU(ucenici[i]);
}
sort(ucenici.begin(),ucenici.end(),BP);
}
void OJU(Ucenik &ucenik)
{
double suma(0);
ucenik.prosjek=1;ucenik.prolaz=false;
for(int i(0);i<broj_predmeta;i++)
{
if(ucenik.ocjene[i]==1)return;
suma+=ucenik.ocjene[i];
}
ucenik.prosjek=suma/broj_predmeta;
ucenik.prolaz=true;
}
bool BP(const Ucenik &u1,const Ucenik &u2)
{
return u1.prosjek > u2.prosjek;
}
void IU(const vector<Ucenik> &ucenici)/*ispisi cenike*/
{
void IJU(const Ucenik &ucenik);/*Ispisi jednog ucenika*/
cout<<endl;
for(int i(0);i<ucenici.size();i++)
IJU(ucenici[i]);
}
void IJU(const Ucenik &ucenik)
{
void ID(const Datum &datum);/*Ispisi datum*/
cout<<"Ucenik "<<ucenik.ime<<" "<<ucenik.prezime<<" rodjen ";
ID(ucenik.datum_rodjenja);
if(ucenik.prolaz)
cout << " ima prosjek " << setw(3) << ucenik.prosjek;
else
cout<<" mora ponavljati razed!";
cout<<endl;
}
void ID(const Datum &datum)
{
cout<<datum.dan<<"."<<datum.mjesec<<"."<<datum.godina;
}