mituri

[C++] podaje srednia, min&max ocene z danych txt+ wyjatki

Oct 1st, 2015
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. /*
  2.  
  3. Napisz program, który czyta wyniki egzaminów z pliku WYNIKI.TXT i oblicza wartość średnią, najwyższą i najniższą.
  4. Prototypy funkcji, które należy napisać i użyć w programie:
  5. a) bool CzytajOceny (char nazwaPliku[], vector<int> &a);
  6. Funkcja czyta dane z pliku do wektora. Zwraca true, jeśli plik został otworzony poprawnie i zawiera dane, w przeciwnym wypadku zwraca false.
  7. b) int Dodaj (const vector<int> &a);
  8. Funkcja zwraca sumę elementów wektora.
  9. c) int MaxOcena (const vector<int> &a);
  10. Funkcja zwraca wartość największego elementu w wektorze.
  11. d) int MinOcena (const vector<int> &a);
  12. Funkcja zwraca wartość najmniejszego elementu w wektorze.
  13. Uzupełnij zadanie o sprawdzanie błędów, na przykład brak pliku z ocenami, pusty plik. Do obsługi sytuacji niepoprawnych wykorzystaj wyjątki.
  14.  
  15. */
  16.  
  17.  
  18. #include "stdafx.h"
  19. #include <queue>
  20. #include <cstdlib>
  21. #include <iostream>
  22. #include <string>
  23. #include <fstream>
  24.  
  25. using namespace std;
  26.  
  27. bool CzytajOceny (char nazwaPliku[], vector<int> &a);
  28. int Dodaj (const vector<int> &a);
  29. int MaxOcena (const vector<int> &a);
  30. int MinOcena (const vector<int> &a);
  31.  
  32. int _tmain(int argc, _TCHAR* argv[]){
  33.  
  34. vector <int> vec;
  35. cout << "oceny: ";
  36. try{
  37. CzytajOceny("wyniki.txt", vec);
  38. }
  39. catch(int error_no){
  40. cout << "Blad nr: " << error_no << " "<< endl;
  41. switch(error_no){
  42. case 0: cout << "Nie wczytano poprawnie pliku" << endl ;break;
  43. case 1: cout << "Ocena spoza zakresu 2 - 5 w pliku" << endl; break;
  44. case 2: cout << "Brak ocen w pliku" << endl; break;
  45. }
  46. }
  47. // do reszty funkcji nie przewiduje wykorzystania wyjatkow. Jezeli powyzsze wyjatki nie zostana wylapanae to program powinien juzdzialac do konca
  48. double srednia = Dodaj(vec) / (double)vec.size();
  49. cout << "srednia: " << Dodaj(vec) << " / " << vec.size() << " = " << srednia << endl;
  50.  
  51. cout << "najwieksza ocena: " << MaxOcena(vec) << endl;
  52. cout << "najmniejsza ocena: " << MinOcena(vec) << endl;
  53.  
  54. system ("PAUSE");
  55. }
  56.  
  57. bool CzytajOceny (char nazwaPliku[], vector<int> &a){
  58. string name = nazwaPliku,
  59. line;
  60. fstream file;
  61. file.open( name, std::ios::in);
  62. if( file.good() == false ){
  63. throw 0; // nie wgrano pliku
  64. return false;
  65. }
  66. while(getline(file,line)){
  67. if(atoi(line.c_str()) < 2 || atoi(line.c_str()) > 5) throw 1; //liczba spoza zakrasu 2-5
  68. a.push_back( atoi(line.c_str()));
  69. cout << a.back() << " ";
  70. }
  71. cout << "\n";
  72. if(a.size() == 0){
  73. throw 2; //brakuje elementow w pliku
  74. return false;
  75. }
  76. else return true;
  77. }
  78.  
  79. int Dodaj (const vector<int> &a){
  80. int sum = 0;
  81. for(int i = 0; i < a.size(); i++){
  82. sum += a[i];
  83. }
  84. return sum;
  85. }
  86. int MaxOcena (const vector<int> &a){
  87. int max = 0;
  88. for(int i = 0; i < a.size(); i++){
  89. if( a[i] > max) max = a[i];
  90. }
  91. return max;
  92. }
  93.  
  94. int MinOcena (const vector<int> &a){
  95. int min = a.back();
  96. for(int i = 0; i < a.size(); i++){
  97. if( a[i] < min) min = a[i];
  98. }
  99. return min;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment