Skip to content

Instantly share code, notes, and snippets.

@jsam
Created January 28, 2013 00:30
Show Gist options
  • Save jsam/4651691 to your computer and use it in GitHub Desktop.
Save jsam/4651691 to your computer and use it in GitHub Desktop.
zamjeni si sve at(i) sa [i] da te ne zbunjuje jer je ista funkcija.....push_back() ti je funkcija s kojom dodajes u listu...i to je to..pretrazivanje radis linearno to ti je najlakse..znaci puknes u petlju i onda pretrazujes element po element..pokazem ti jos sortiranje i to ti je ta ista sablona koja dolazi
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
class cstudent
{
public:
long long mat_broj;
string ime_prezime;
void upis()
{
cout << "Unesite maticni broj:$ "; cin >> mat_broj;
cout << "Unesite ime i prezime:$ "; cin >> ime_prezime;
}
void ispis()
{
cout << "Maticni broj: " << mat_broj << endl
<< "Ime i prezime: " << ime_prezime << endl << endl;
}
};
class cprijava
{
public:
long long sifra;
long long mat_broj;
string predmet;
string rok;
void upis()
{
cout << "Sifra:$ "; cin >> sifra;
cout << "Maticni broj:$ "; cin >> mat_broj;
cout << "Predmet:$ "; cin >> predmet;
cout << "Rok:$ "; cin >> rok;
}
void ispis()
{
cout << "Sifra: " << sifra << endl
<< "Maticni broj: " << mat_broj << endl
<< "Predmet: " << predmet << endl
<< "Rok: " << rok << endl << endl;
}
};
int izbornik()
{
int izbor = 0;
cout << "1. unesi studenta\n"
<< "2. ispisi sve studente\n"
<< "3. unesi prijavu\n"
<< "4. ispisi sve prijave\n"
<< "5. ispis svih prijava za zadanog studenta\n"
<< "6. ispisi studente sa prijavama\n"
<< "9. exit\n";
cin >> izbor;
return izbor;
}
void zapisi_prijave_u_datoteku(vector<cprijava*> prijave)
{
fstream dat;
dat.open("prijave.dat", fstream::in | fstream::out | fstream::app);
for ( int i = 0; i < prijave.size(); ++i )
{
dat << "Sifra: " << prijave.at(i)->sifra << endl
<< "Maticni broj: " << prijave.at(i)->mat_broj << endl
<< "Predmet: " << prijave.at(i)->predmet << endl
<< "Rok: " << prijave.at(i)->rok << endl << endl;
}
dat.close(); //cout << "ZAPISUJEM U DATOTEKU!" << endl;
}
int main()
{
vector<cstudent*> polje_studenata;
vector<cprijava*> polje_prijava;
cstudent *cstudent_element;
cprijava *cprijava_element;
bool student_ne_postoji;
while(true)
{
switch(izbornik())
{
case 1:
cstudent_element = new cstudent;
cstudent_element->upis();
polje_studenata.push_back(cstudent_element);
break;
case 2:
for( int i = 0; i < polje_studenata.size(); ++i )
polje_studenata.at(i)->ispis();
break;
case 3:
cprijava_element = new cprijava;
cprijava_element->upis();
// onemoguci dodavanje prijave u listu ako student ne postoji
student_ne_postoji = true;
for ( int i = 0; i < polje_studenata.size(); ++i )
if ( cprijava_element->mat_broj == polje_studenata.at(i)->mat_broj )
student_ne_postoji = false;
if(!student_ne_postoji)
{
polje_prijava.push_back(cprijava_element);
zapisi_prijave_u_datoteku(polje_prijava);
}
break;
case 4:
for( int i = 0; i < polje_prijava.size(); ++i )
polje_prijava.at(i)->ispis();
break;
case 5:
long long mat_broj_studenta;
cout <<"Maticni broj studenta po kojem trazimo prijave: "; cin >> mat_broj_studenta;
for ( int i = 0; i < polje_prijava.size(); ++i )
{
if ( polje_prijava.at(i)->mat_broj == mat_broj_studenta )
{
polje_prijava.at(i)->ispis();
}
}
break;
case 6:
int broj_prijava;
for ( int i = 0; i < polje_studenata.size(); ++i)
{
broj_prijava = 0;
polje_studenata.at(i)->ispis(); // ispis podatke za tog studenta
for ( int j = 0; j < polje_prijava.size(); ++j) // broji koliko prijava ima taj student
{
if( polje_studenata.at(i)->mat_broj == polje_prijava.at(j)->mat_broj )
broj_prijava++;
}
cout << "Ukupan broj prijava: " << broj_prijava << endl;
}
break;
case 9:
return 0;
}
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment