zajecia 11 grupa 03c


//Dana jest klasa Pkt (identyczny jak na poprzednich zajęciach):
class Pkt{
public:
double X, Y, Z;
};
// Dane jest 6 plików wejściowych (tylko odczyt)
// Stwórz pliki o podanej zawartości i nazwie:
1) Plik1.txt - plik poprawny  gdy nie zawiera błędów (identyczny jak na poprzednich zajęciach),
2) Plik2.txt - plik niepoprawny  zbyt mała ilość wierszy do wczytania (12),
3) Plik3.txt - plik niepoprawny  brak informacji o Punktach,
4) Plik4.txt - plik niepoprawny  brak pliku lub błąd odczytu pliku,
5) Plik5.txt - plik niepoprawny  brak identyfikatora END na końcu pliku  plik  uszkodzony .
6) Plik6.txt - plik niepoprawny  brak nagłówka ILOSC_PKT
Nazwa pliku Zawartość pliku:
Plik1.txt ILOSC_PKT 7
POS 4 12.3 1 0
POS 2 1 -2 -0.25
POS 1 -0.8 12.0 -1
POS 3 0.75 0.25 0.43
POS 5 0 0 -1
POS 6 1.1 2.2 3.3
POS 0 -1 -4 4
END
Plik2.txt ILOSC_PKT 11
POS 4 -0.8 12.0 -1
POS 3 0.75 0.25 0.43
POS 2 0 0 -1
POS 1 1.1 2.2 3.3
POS 0 -1 -4 4
END
Plik3.txt ILOSC_PKT 3
END
Plik4.txt Brak pliku o tej nazwie
Plik5.txt ILOSC_PKT 3
POS 2 0 0 -1
POS 1 1.1 2.2 3.3
POS 0 -1 -4 4
Plik6.txt 3
POS 2 0 0 -1
POS 1 1.1 2.2 3.3
POS 0 -1 -4 4
END
//Dany jest następujący schemat dziedziczenia klas błędu (rys.1):
//======================================================================
#include
#include
#include
#include
//======================================================================
using namespace std;
//======================================================================
class BladProg{
protected:
string m_strTekstBladu;
BladProg():m_strTekstBladu("Blad nieokreslony!"){}
public:
BladProg( string aTekstBledu ):m_strTekstBladu(aTekstBledu){};
BladProg( const BladProg& aBladProg ):m_strTekstBladu(aBladProg.m_strTekstBladu){}
virtual ~BladProg(){};
virtual const char* what(){ return m_strTekstBladu.c_str(); } // funkcja zwraca tekst bledu
};
//=========================================================================
int main(void){
try{ // TUTAJ UMISC CAŁY SWOJ PROGRAM Z POPRZEDNICH ZAJEC
// tak się rzuca wyjątek
//throw BladProg("To jest przyklad jak rzucic okreslony wyjatek w programie!");
//throw BladProg_BrakPliku("Plik istnieje, lecz nie mozn go otworzyc!");
//throw BladProg_BrakEnd("Plik uszkodzony -> brak znacznika konca pliku");
//throw BladProg_BrakPunkt("Plik uszkodzony -> brak informacji o Punktach");
//throw BladProg_BladWiersz("Plik uszkodzony -> zbyt mala ilosc wierszy Punktow");
//throw BladProg_BladNagl("Plik uszkodzony  plik w niepoprawnym formacie!");
}
catch( BladProg& ex ){
cout << "-----------------------------------------------" << endl;
cout << "Wystapil wyjatek. Program zostal zakonczony z bledem!!" << endl;
cout << "Tekst Bledu : " << ex.what() << endl;
cout << "Plik : " << __FILE__ << endl;
cout << "Ta Linia nr : " << __LINE__ << endl;
}
catch( exception& ex) {
cout << "Blad std -> " << ex.what() << endl;
}
catch(...){
cout << "Blad nieokreslony !! " << endl;
}
return 0;
}
TREŚĆ ZADANIA:
1) Program z poprzednich zajęć uzupełnij o klasę błędów BladProg oraz klasy potomne według
schematu dziedziczenia jak na rysunku nr 1 (poprzednia strona),
2) dodaj do programu możliwość wykrywania błędów w pliku wejściowym - analizowanie
struktury pliku wejściowego (patrz plik1.txt, plik2.txt, plik3.txt, plik4.txt, plik5.txt oraz
plik6.txt) oraz rzuć odpowiedni wyjątek (zaznaczono kolorem niebieskim) w przypadku jego
wykrycia tj:
a) zbyt mała ilość wierszy do wczytania (44) BladProg_BladWiersz
b) brak informacji o Punktach, BladProg_BrakPunkt
c) brak pliku lub błąd odczytu pliku, BladProg_BrakPliku
d) brak identyfikatora END na końcu pliku  plik  uszkodzony , BladProg_BrakEnd
e) brak identyfikatora ilości punktów ILOSC_PKT. BladProg_BrakNagl
!!! UWAGA !!!
Konwersja std::string float patrz strona internetowa przedmiotu - > 9. Materiały dydaktyczne dla
studentów


Wyszukiwarka

Podobne podstrony:
zajecia 11 grupa 022
zajecia nr 8 grupa 03
zajecia nr 5 grupa 04
zajecia 10 grupa 04x
zajecia 06 grupa 04s
zajecia 10 grupa 01x
zajecia nr 5 grupa 03
zajecia 06 grupa 02s
zajecia 07 grupa 017
zajecia nr 6 grupa 04
zajecia 09 grupa 01z
zajecia 08 grupa 03f
zajecia 12 grupa 013
zajecia 07 grupa 03d
zajecia 06 grupa 03s
zajecia 07 grupa 027
zajecia 05 grupa 015

więcej podobnych podstron