[ chalka @ 29.04.2006. 09:04 ] @
Cao zamolio bi da mi neko pomogne oko ovog zadatka
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;
}
——