Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Napisz program, który czyta wyniki egzaminów z pliku WYNIKI.TXT i oblicza wartość średnią, najwyższą i najniższą.
- Prototypy funkcji, które należy napisać i użyć w programie:
- a) bool CzytajOceny (char nazwaPliku[], vector<int> &a);
- Funkcja czyta dane z pliku do wektora. Zwraca true, jeśli plik został otworzony poprawnie i zawiera dane, w przeciwnym wypadku zwraca false.
- b) int Dodaj (const vector<int> &a);
- Funkcja zwraca sumę elementów wektora.
- c) int MaxOcena (const vector<int> &a);
- Funkcja zwraca wartość największego elementu w wektorze.
- d) int MinOcena (const vector<int> &a);
- Funkcja zwraca wartość najmniejszego elementu w wektorze.
- 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.
- */
- #include "stdafx.h"
- #include <queue>
- #include <cstdlib>
- #include <iostream>
- #include <string>
- #include <fstream>
- using namespace std;
- bool CzytajOceny (char nazwaPliku[], vector<int> &a);
- int Dodaj (const vector<int> &a);
- int MaxOcena (const vector<int> &a);
- int MinOcena (const vector<int> &a);
- int _tmain(int argc, _TCHAR* argv[]){
- vector <int> vec;
- cout << "oceny: ";
- try{
- CzytajOceny("wyniki.txt", vec);
- }
- catch(int error_no){
- cout << "Blad nr: " << error_no << " "<< endl;
- switch(error_no){
- case 0: cout << "Nie wczytano poprawnie pliku" << endl ;break;
- case 1: cout << "Ocena spoza zakresu 2 - 5 w pliku" << endl; break;
- case 2: cout << "Brak ocen w pliku" << endl; break;
- }
- }
- // do reszty funkcji nie przewiduje wykorzystania wyjatkow. Jezeli powyzsze wyjatki nie zostana wylapanae to program powinien juzdzialac do konca
- double srednia = Dodaj(vec) / (double)vec.size();
- cout << "srednia: " << Dodaj(vec) << " / " << vec.size() << " = " << srednia << endl;
- cout << "najwieksza ocena: " << MaxOcena(vec) << endl;
- cout << "najmniejsza ocena: " << MinOcena(vec) << endl;
- system ("PAUSE");
- }
- bool CzytajOceny (char nazwaPliku[], vector<int> &a){
- string name = nazwaPliku,
- line;
- fstream file;
- file.open( name, std::ios::in);
- if( file.good() == false ){
- throw 0; // nie wgrano pliku
- return false;
- }
- while(getline(file,line)){
- if(atoi(line.c_str()) < 2 || atoi(line.c_str()) > 5) throw 1; //liczba spoza zakrasu 2-5
- a.push_back( atoi(line.c_str()));
- cout << a.back() << " ";
- }
- cout << "\n";
- if(a.size() == 0){
- throw 2; //brakuje elementow w pliku
- return false;
- }
- else return true;
- }
- int Dodaj (const vector<int> &a){
- int sum = 0;
- for(int i = 0; i < a.size(); i++){
- sum += a[i];
- }
- return sum;
- }
- int MaxOcena (const vector<int> &a){
- int max = 0;
- for(int i = 0; i < a.size(); i++){
- if( a[i] > max) max = a[i];
- }
- return max;
- }
- int MinOcena (const vector<int> &a){
- int min = a.back();
- for(int i = 0; i < a.size(); i++){
- if( a[i] < min) min = a[i];
- }
- return min;
- }
Advertisement
Add Comment
Please, Sign In to add comment