Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- TP 16/17 (Tutorijal 14, Zadatak 1)
- Autotestovi by Enil Pajic.
- NOTE: ukoliko smatrate da je greska u autotestu, radite po postavci, bice uvazeno
- NOTE: vrsit ce se provjera na prepisivanje tutorijala (i kaznjavati sa oduzimanjem poena od ukupno osvojenih)
- NOTE: ovaj tutorijal se salje kao zadaca na Zamger
- */
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <vector>
- #include <algorithm>
- #include <iomanip>
- #include <sstream>
- using namespace std;
- struct Student {
- string iip;
- int indeks;
- int dan, mjesec, godina;
- double prosjek;
- };
- int main ()
- {
- //orbob
- ifstream ulaz("STUDENTI.TXT");
- if(!ulaz) {
- cout << "Datoteka STUDENTI.TXT ne postoji!" << endl;
- return 0;
- }
- string iip;
- int dani[12]{31,28,31,30,31,30,31,31,30,31,30,31};
- int indeks, dan, mjesec, godina, ocjena;
- vector<int> ocjene;
- vector<Student> studenti;
- while(getline(ulaz, iip)) {
- if(ulaz.eof()) {
- break;
- } else if(ulaz.bad()) {
- cout << "Problemi pri citanju datoteke STUDENTI.TXT" << endl;
- return 0;
- }
- ulaz >> indeks;
- if(!ulaz || indeks < 0) {
- cout << "Neispravan format datoteke STUDENTI.TXT" << endl;
- return 0;
- }
- char znak;
- ulaz >> dan >> znak;
- if(!ulaz || znak != '/') {
- cout << "Neispravan format datoteke STUDENTI.TXT" << endl;
- return 0;
- }
- ulaz >> mjesec >> znak;
- if(!ulaz || znak != '/') {
- cout << "Neispravan format datoteke STUDENTI.TXT" << endl;
- return 0;
- }
- ulaz >> godina;
- if(!ulaz) {
- cout << "Neispravan format datoteke STUDENTI.TXT" << endl;
- return 0;
- }
- if(godina%400==0 || (godina%100!=0 && godina%4==0)) {
- dani[1] = 29;
- } else {
- dani[1] = 28;
- }
- if(mjesec < 1 || mjesec > 12 || dan < 1 || dan > dani[mjesec - 1] || godina < 0) {
- cout << "Neispravan format datoteke STUDENTI.TXT" << endl;
- return 0;
- }
- while(ulaz) {
- if(ulaz.eof()) {
- break;
- } else if(!ulaz) {
- cout << "Neispravan format datoteke STUDENTI.TXT" << endl;
- return 0;
- } else if(ulaz >> ocjena) {
- if(ocjena < 0 || ocjena > 10) {
- cout << "Neispravan format datoteke STUDENTI.TXT" << endl;
- return 0;
- }
- if(ulaz.peek() == ',') {
- ulaz.get();
- }
- }
- ocjene.push_back(ocjena);
- }
- ulaz.clear();
- int suma(0), brojac(0);
- for(int i=0; i < ocjene.size(); i++) {
- if(ocjene[i] > 5) {
- suma += ocjene[i];
- brojac++;
- }
- }
- if(suma == 0) {
- suma = 5;
- brojac = 1;
- }
- Student temp{iip, indeks, dan, mjesec, godina, (double)suma / brojac};
- studenti.push_back(temp);
- ocjene.resize(0);
- }
- sort(studenti.begin(),studenti.end(),[](Student a, Student b) { if(a.prosjek == b.prosjek) return a.indeks < b.indeks; return a.prosjek > b.prosjek; });
- ofstream izlaz("IZVJESTAJ.TXT");
- izlaz << left;
- izlaz << setw(30) << "Student" << setw(10) << "Indeks" << setw(20) << "Datum rodjenja" << setw(10) << "Prosjek" << endl;
- izlaz << setw(30) << "-------" << setw(10) << "------" << setw(20) << "--------------" << setw(10) << "-------" << endl;
- for(int i=0; i < studenti.size(); i++) {
- izlaz << setw(30) << studenti[i].iip << setw(10) << studenti[i].indeks;
- stringstream rodjendan;
- rodjendan << studenti[i].dan << "/" << studenti[i].mjesec << "/" << studenti[i].godina;
- izlaz << setw(20) << rodjendan.str() << setw(10) << fixed << setprecision(2) << studenti[i].prosjek << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement