Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<math.h> // Polzva se zaradi floor() funkciqta za zakruglqne na ocenkata
- #include<fstream>
- #include<string.h>
- using namespace std;
- class klasno
- {
- private:
- int nomer;
- string disciplina;
- float sreden_uspeh;
- public:
- klasno() {}
- klasno(int nomer,string disc,float sreden_uspeh);
- float vurni_uspeh();
- float vurni_uspeh_za_disciplina(string disciplina);
- void zadai_uspeh(float uspeh);
- void zadai_ime_na_disciplina(string disc);
- void zapis_vuv_fail(ofstream &ofs);
- void zarejdane_ot_fail(ifstream &ifs);
- };
- float klasno::vurni_uspeh() {
- return sreden_uspeh;
- }
- float klasno::vurni_uspeh_za_disciplina(string disc) {
- if (disc == disciplina) {
- return sreden_uspeh;
- } else return -1;
- }
- klasno::klasno(int nmr,string disc,float sr_uspeh) {
- nomer = nmr;
- disciplina = disc;
- sreden_uspeh = sr_uspeh;
- }
- void klasno::zadai_uspeh(float uspeh) {
- sreden_uspeh = uspeh;
- }
- void klasno::zadai_ime_na_disciplina(string disc) {
- disciplina = disc;
- }
- void klasno::zapis_vuv_fail(ofstream &ofs)
- {
- ofs << nomer << "\t" << disciplina << "\t" << sreden_uspeh << "\t" << endl;
- }
- void klasno::zarejdane_ot_fail(ifstream &ifs) {
- ifs >> nomer >> disciplina >> sreden_uspeh;
- }
- int main()
- {
- klasno kl[200];
- int izbor;
- int N = 0;
- int nomer;
- for(;;) {
- cout<<endl<<"---MENU----"<<endl;
- cout<<"1. Vuvedi danni"<<endl;
- cout<<"2. Sreden uspeh po disciplina"<<endl;
- cout<<"3. Sreden uspeh za vsichki disciplini"<<endl;
- cout<<"4. Broi obekti i maksimalniqt im broi"<<endl;
- cout<<"5. Dobavqne na novo klasno"<<endl;
- cout<<"6. Korekciq na danni za klasno"<<endl;
- cout<<"7. Zapis na dannite vuv fail"<<endl;
- cout<<"8. Chetene na danni ot fail"<<endl;
- cout<<"0. Izhod ot programata"<<endl;
- cout<<endl<<"\tVashiqt izbor: ";cin>>izbor;
- switch(izbor) {
- case 1: {
- cout<<"---- Vuvejdane na danni ----"<<endl;
- cout<<"Vuvedi broi danni: "; cin >> N;
- cout<<endl;
- int nomer;
- string disciplina;
- float sreden_uspeh;
- for(int i=0;i<N;i++) {
- cout<<"Vuvedi danni za klasno:"<<endl;
- cout<<"Nomer na klasno: "; cin>>disciplina;
- cout<<"Disciplina: "; cin>>disciplina;
- cout<<"Sreden uspeh: "; cin>>sreden_uspeh;
- cout<<endl;
- kl[i] = klasno(nomer,disciplina,sreden_uspeh);
- }
- } break;
- case 2: {
- cout<<"---- Proverka na sreden uspeh po disciplina ----"<<endl;
- string disciplina;
- float avg = 0;
- int rezultati = 0;
- cout<<"Disciplina za proverka na sreden uspeh: "; cin>>disciplina;
- for(int i=0;i<N;i++) {
- if(kl[i].vurni_uspeh_za_disciplina(disciplina) != -1) { // Ako nqma takava discplina zapisana vrushta -1
- avg += kl[i].vurni_uspeh_za_disciplina(disciplina); // Sumira uspeha ot vsichki disciplini, koito se tursqt
- rezultati++; // Uvelichava se pri vseki otkrit rezultat
- }
- }
- avg/=rezultati; // razdelq sumata na broq rezultati za da se poluchi sredno aritmetichno
- avg = (floor((avg*2)+0.5)/2); // Prevrushta sredno aritmetichnoto kum zakrugleno do 0.5 Primer: 4.443333 => 4.5 | 5.89 => 6
- if(rezultati != 0) {
- cout<<"Sredniqt uspeh po disciplinata "<<disciplina<<" e "<<avg<<endl;
- } else {
- cout<<"Ne sa otkriti rezultati za posochenata disciplina!"<<endl;
- }
- cout<<"----------"<<endl;
- } break;
- case 3: {
- cout<<"---- Sreden uspeh za vsichki disciplini ----"<<endl;
- if(N == 0) {
- cout<<"Nqma vuvedeni danni za da se izvede sreden uspeh!"<<endl;
- cout<<"----------"<<endl;
- break;
- }
- float avg = 0;
- for(int i=0;i<N;i++) {
- avg += kl[i].vurni_uspeh();
- }
- avg/=N;
- avg = (floor((avg*2)+0.5)/2);
- cout<<"Sredniqt uspeh za vsichki disciplini e "<<avg<<endl;
- cout<<"----------"<<endl;
- } break;
- case 4: cout<<"Broqt obekti e "<<N<<" ot 200 maks."<<endl; break;
- case 5: {
- cout<<"---- Dobavqne na novo klasno ----"<<endl;
- if(N>=200) {
- cout<<"Maksimalniqt broi ot 200 rezultata e dostignat!"<<endl;
- } else {
- int nomer;
- string disciplina;
- float sreden_uspeh;
- cout<<"Vuvedi danni za novo klasno "<<endl;
- cout<<"Nomer na klasno: "; cin>>nomer;
- cout<<"Disciplina: "; cin>>disciplina;
- cout<<"Sreden uspeh: "; cin>>sreden_uspeh;
- cout<<endl;
- kl[N] = klasno(nomer,disciplina,sreden_uspeh); // Zadava stoinost na prazniq obekt ot masiva
- N++; // Uvelichava broq obekti, koito sa zapisani
- }
- cout<<"----------"<<endl;
- } break;
- case 6: {
- cout<<"---- Korekciq na danni za klasno ----"<<endl;
- int n;
- string disciplina;
- float sreden_uspeh;
- cout<<"Vuvedi nomer na klasno: "; cin>>n;
- if(n > N || n <= 0) {
- cout<<"Ne e otkrit rezultat s tozi nomer!";
- cout<<"----------"<<endl;
- break;
- }
- cout<<"Disciplina: "; cin>>disciplina;
- cout<<"Sreden uspeh: "; cin>>sreden_uspeh;
- cout<<endl;
- kl[n-1].zadai_ime_na_disciplina(disciplina);
- kl[n-1].zadai_uspeh(sreden_uspeh);
- cout<<"----------"<<endl;
- } break;
- case 7: {
- cout<<"---- Zapis na dannite vuv fail ----"<<endl;
- ofstream ofs;
- ofs.open("klasni.txt", ios::out);
- for (int i = 1; i < N; i++)
- kl[i].zapis_vuv_fail(ofs);
- ofs.close();
- cout << " " << "Failut e zapisan uspeshno." << endl;
- cout<<"----------"<<endl;
- } break;
- case 8: {
- cout<<"---- Zarejdane na danni ot fail ----"<<endl;
- ifstream ifs;
- ifs.open("klasni.txt", ios::in);
- N = 0;
- if (ifs.fail())
- {
- cout << "Greshka pri otvarqne na fail!" << endl;
- cout<<"----------"<<endl;
- break;
- }
- while (!ifs.eof())
- {
- kl[N].zarejdane_ot_fail(ifs);
- N++;
- }
- ifs.close();
- cout <<"Dannite bqha procheteni uspeshno!"<< endl;
- cout<<"----------"<<endl;
- } break;
- case 0: {
- cout<<endl<<"IZHOD OT PROGRAMATA"<<endl;
- return 0;
- } break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement