Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Napisati klasu Trokut koje ima za parametre duljine stranica a, b i c. Klasa Trokut ima
- defaultni i parametarski konstruktor. U klasi postoje i metode povrsina() (za bilo koji
- trokut!) i opseg() koje vradaju površinu i opseg trokuta te metoda koja provjerava je li
- trokut pravokutan (je/nije). Ukoliko se pokuša konstruirati objekt klase koji ne može biti
- trokut (teorem o nejednakosti trokuta, npr. (1,2,3)) potrebno je dobaciti iznimku
- GeoIznimka, a u glavnom programu, prilikom obrade iznimke, ispisati tekst "Trokut sa
- stranicama a,b,c nije mogud" gdje umjesto a,b,c treba ispisati stvarne vrijednosti. Klasa
- GeoIznimka treba sadržavati duljine stranica trokuta koji je napravio iznimku. U glavnom
- programu kreirati dva trokuta - jedan sa defaultnim konstruktorom, drugi jednakostranični
- sa duljinom stranice 4. Ispisati opseg za oba trokuta, te koji trokut ima vedu površinu
- odnosno da su površine jednake.*/
- #include<iostream>
- #include<math.h>
- using namespace std;
- class Geoiznimka : public exception
- {
- private:
- char *msg;
- public:
- float a, b, c;
- Geoiznimka(float _a, float _b, float _c) {
- a = _a;
- b = _b;
- c = _c;
- }
- Geoiznimka() :msg() {}
- virtual const char* what() const throw() {
- return msg;
- }
- };
- class Trokut {
- private:
- float a, b, c;
- public:
- Trokut() : a(3), b(4), c(5) {};
- Trokut(float _a, float _b, float _c) : a(_a), b(_b), c(_c) {
- if ((_a + _b) > _c && (_a + _c) > _b && (_b + _c) > _a) {
- a = _a;
- b = _b;
- c = _c;
- }
- else throw Geoiznimka(a, b, c);
- }
- float Povrsina() {
- float s;
- s = (a + b + c) / 2;
- return sqrt(s*(s - a)*(s - b)*(s - c));
- }
- float Opseg() {
- return a + b + c;
- }
- bool Provjera() {
- if (c == sqrt(a*a + b*b) || a == sqrt(c*c - b*b) || b == sqrt(c*c - a*a))
- return true;
- else
- return false;
- }
- };
- int main() {
- try {
- Trokut T1;
- Trokut T2(1, 2, 3);
- cout << "Povrsina trokuta T1:" << T1.Povrsina() << endl;
- cout << "Povrsina trokuta T2:" << T2.Povrsina() << endl;
- if (T1.Povrsina()>T2.Povrsina()) {
- cout << "Trokut T1(defaultni) je veci!" << endl;
- }
- else {
- cout << "Trokut T2(parametarski) je veci!" << endl;
- }
- }
- catch (Geoiznimka& iznimka) {
- cout << "Trokut sa stranicama " << iznimka.a << ", " << iznimka.b << ", " << iznimka.c << " nije moguc." << endl;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement