Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.59 KB | None | 0 0
  1. #include<iostream>
  2. #include<math.h> // Polzva se zaradi floor() funkciqta za zakruglqne na ocenkata
  3. #include<fstream>
  4. #include<string.h>
  5. using namespace std;
  6.  
  7. class klasno
  8. {
  9. private:
  10. int nomer;
  11. string disciplina;
  12. float sreden_uspeh;
  13. public:
  14. klasno() {}
  15. klasno(int nomer,string disc,float sreden_uspeh);
  16. float vurni_uspeh();
  17. float vurni_uspeh_za_disciplina(string disciplina);
  18. void zadai_uspeh(float uspeh);
  19. void zadai_ime_na_disciplina(string disc);
  20. void zapis_vuv_fail(ofstream &ofs);
  21. void zarejdane_ot_fail(ifstream &ifs);
  22. };
  23.  
  24. float klasno::vurni_uspeh() {
  25. return sreden_uspeh;
  26. }
  27.  
  28. float klasno::vurni_uspeh_za_disciplina(string disc) {
  29. if (disc == disciplina) {
  30. return sreden_uspeh;
  31. } else return -1;
  32. }
  33.  
  34. klasno::klasno(int nmr,string disc,float sr_uspeh) {
  35. nomer = nmr;
  36. disciplina = disc;
  37. sreden_uspeh = sr_uspeh;
  38. }
  39.  
  40. void klasno::zadai_uspeh(float uspeh) {
  41. sreden_uspeh = uspeh;
  42. }
  43.  
  44. void klasno::zadai_ime_na_disciplina(string disc) {
  45. disciplina = disc;
  46. }
  47.  
  48. void klasno::zapis_vuv_fail(ofstream &ofs)
  49. {
  50. ofs << nomer << "\t" << disciplina << "\t" << sreden_uspeh << "\t" << endl;
  51. }
  52.  
  53. void klasno::zarejdane_ot_fail(ifstream &ifs) {
  54. ifs >> nomer >> disciplina >> sreden_uspeh;
  55. }
  56.  
  57. int main()
  58. {
  59. klasno kl[200];
  60. int izbor;
  61. int N = 0;
  62.  
  63. int nomer;
  64.  
  65. for(;;) {
  66. cout<<endl<<"---MENU----"<<endl;
  67. cout<<"1. Vuvedi danni"<<endl;
  68. cout<<"2. Sreden uspeh po disciplina"<<endl;
  69. cout<<"3. Sreden uspeh za vsichki disciplini"<<endl;
  70. cout<<"4. Broi obekti i maksimalniqt im broi"<<endl;
  71. cout<<"5. Dobavqne na novo klasno"<<endl;
  72. cout<<"6. Korekciq na danni za klasno"<<endl;
  73. cout<<"7. Zapis na dannite vuv fail"<<endl;
  74. cout<<"8. Chetene na danni ot fail"<<endl;
  75. cout<<"0. Izhod ot programata"<<endl;
  76. cout<<endl<<"\tVashiqt izbor: ";cin>>izbor;
  77.  
  78. switch(izbor) {
  79. case 1: {
  80. cout<<"---- Vuvejdane na danni ----"<<endl;
  81. cout<<"Vuvedi broi danni: "; cin >> N;
  82. cout<<endl;
  83. int nomer;
  84. string disciplina;
  85. float sreden_uspeh;
  86. for(int i=0;i<N;i++) {
  87. cout<<"Vuvedi danni za klasno:"<<endl;
  88. cout<<"Nomer na klasno: "; cin>>disciplina;
  89. cout<<"Disciplina: "; cin>>disciplina;
  90. cout<<"Sreden uspeh: "; cin>>sreden_uspeh;
  91. cout<<endl;
  92. kl[i] = klasno(nomer,disciplina,sreden_uspeh);
  93. }
  94. } break;
  95.  
  96. case 2: {
  97. cout<<"---- Proverka na sreden uspeh po disciplina ----"<<endl;
  98. string disciplina;
  99. float avg = 0;
  100. int rezultati = 0;
  101. cout<<"Disciplina za proverka na sreden uspeh: "; cin>>disciplina;
  102. for(int i=0;i<N;i++) {
  103. if(kl[i].vurni_uspeh_za_disciplina(disciplina) != -1) { // Ako nqma takava discplina zapisana vrushta -1
  104. avg += kl[i].vurni_uspeh_za_disciplina(disciplina); // Sumira uspeha ot vsichki disciplini, koito se tursqt
  105. rezultati++; // Uvelichava se pri vseki otkrit rezultat
  106. }
  107. }
  108. avg/=rezultati; // razdelq sumata na broq rezultati za da se poluchi sredno aritmetichno
  109. avg = (floor((avg*2)+0.5)/2); // Prevrushta sredno aritmetichnoto kum zakrugleno do 0.5 Primer: 4.443333 => 4.5 | 5.89 => 6
  110. if(rezultati != 0) {
  111. cout<<"Sredniqt uspeh po disciplinata "<<disciplina<<" e "<<avg<<endl;
  112. } else {
  113. cout<<"Ne sa otkriti rezultati za posochenata disciplina!"<<endl;
  114. }
  115. cout<<"----------"<<endl;
  116. } break;
  117.  
  118. case 3: {
  119. cout<<"---- Sreden uspeh za vsichki disciplini ----"<<endl;
  120. if(N == 0) {
  121. cout<<"Nqma vuvedeni danni za da se izvede sreden uspeh!"<<endl;
  122. cout<<"----------"<<endl;
  123. break;
  124. }
  125. float avg = 0;
  126. for(int i=0;i<N;i++) {
  127. avg += kl[i].vurni_uspeh();
  128. }
  129. avg/=N;
  130. avg = (floor((avg*2)+0.5)/2);
  131. cout<<"Sredniqt uspeh za vsichki disciplini e "<<avg<<endl;
  132. cout<<"----------"<<endl;
  133. } break;
  134.  
  135. case 4: cout<<"Broqt obekti e "<<N<<" ot 200 maks."<<endl; break;
  136.  
  137. case 5: {
  138. cout<<"---- Dobavqne na novo klasno ----"<<endl;
  139. if(N>=200) {
  140. cout<<"Maksimalniqt broi ot 200 rezultata e dostignat!"<<endl;
  141. } else {
  142. int nomer;
  143. string disciplina;
  144. float sreden_uspeh;
  145. cout<<"Vuvedi danni za novo klasno "<<endl;
  146. cout<<"Nomer na klasno: "; cin>>nomer;
  147. cout<<"Disciplina: "; cin>>disciplina;
  148. cout<<"Sreden uspeh: "; cin>>sreden_uspeh;
  149. cout<<endl;
  150. kl[N] = klasno(nomer,disciplina,sreden_uspeh); // Zadava stoinost na prazniq obekt ot masiva
  151. N++; // Uvelichava broq obekti, koito sa zapisani
  152. }
  153. cout<<"----------"<<endl;
  154. } break;
  155.  
  156. case 6: {
  157. cout<<"---- Korekciq na danni za klasno ----"<<endl;
  158. int n;
  159. string disciplina;
  160. float sreden_uspeh;
  161. cout<<"Vuvedi nomer na klasno: "; cin>>n;
  162.  
  163. if(n > N || n <= 0) {
  164. cout<<"Ne e otkrit rezultat s tozi nomer!";
  165. cout<<"----------"<<endl;
  166. break;
  167. }
  168.  
  169. cout<<"Disciplina: "; cin>>disciplina;
  170. cout<<"Sreden uspeh: "; cin>>sreden_uspeh;
  171. cout<<endl;
  172. kl[n-1].zadai_ime_na_disciplina(disciplina);
  173. kl[n-1].zadai_uspeh(sreden_uspeh);
  174. cout<<"----------"<<endl;
  175. } break;
  176.  
  177. case 7: {
  178. cout<<"---- Zapis na dannite vuv fail ----"<<endl;
  179. ofstream ofs;
  180. ofs.open("klasni.txt", ios::out);
  181. for (int i = 1; i < N; i++)
  182. kl[i].zapis_vuv_fail(ofs);
  183. ofs.close();
  184. cout << " " << "Failut e zapisan uspeshno." << endl;
  185. cout<<"----------"<<endl;
  186. } break;
  187.  
  188. case 8: {
  189. cout<<"---- Zarejdane na danni ot fail ----"<<endl;
  190. ifstream ifs;
  191. ifs.open("klasni.txt", ios::in);
  192. N = 0;
  193.  
  194. if (ifs.fail())
  195. {
  196. cout << "Greshka pri otvarqne na fail!" << endl;
  197. cout<<"----------"<<endl;
  198. break;
  199. }
  200.  
  201. while (!ifs.eof())
  202. {
  203. kl[N].zarejdane_ot_fail(ifs);
  204. N++;
  205. }
  206.  
  207. ifs.close();
  208. cout <<"Dannite bqha procheteni uspeshno!"<< endl;
  209. cout<<"----------"<<endl;
  210. } break;
  211.  
  212. case 0: {
  213. cout<<endl<<"IZHOD OT PROGRAMATA"<<endl;
  214. return 0;
  215. } break;
  216. }
  217.  
  218. }
  219.  
  220. return 0;
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement