Advertisement
filip710

LV5 - Z1

Nov 30th, 2016
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.35 KB | None | 0 0
  1.  
  2. /*Napisati klasu  Trokut  koje ima za parametre duljine stranica  a,  b  i  c. Klasa  Trokut  ima
  3. defaultni i parametarski konstruktor.  U klasi postoje i metode  povrsina() (za bilo koji
  4. trokut!) i  opseg() koje vradaju površinu i opseg trokuta te metoda koja provjerava je li
  5. trokut pravokutan (je/nije). Ukoliko se pokuša konstruirati objekt klase koji ne može biti
  6. trokut (teorem o nejednakosti trokuta, npr. (1,2,3)) potrebno je dobaciti iznimku
  7. GeoIznimka, a u glavnom programu, prilikom obrade iznimke, ispisati tekst "Trokut sa
  8. stranicama a,b,c nije mogud" gdje umjesto a,b,c treba ispisati stvarne vrijednosti. Klasa
  9. GeoIznimka treba sadržavati duljine stranica trokuta koji je napravio iznimku. U glavnom
  10. programu kreirati dva trokuta - jedan sa defaultnim konstruktorom, drugi jednakostranični
  11. sa duljinom stranice 4. Ispisati opseg za oba trokuta, te koji trokut ima vedu površinu
  12. odnosno da su površine jednake.*/
  13.  
  14. #include<iostream>
  15. #include<math.h>
  16. using namespace std;
  17. class Geoiznimka : public exception
  18. {
  19. private:
  20.     char *msg;
  21. public:
  22.     float a, b, c;
  23.     Geoiznimka(float _a, float _b, float _c) {
  24.         a = _a;
  25.         b = _b;
  26.         c = _c;
  27.     }
  28.     Geoiznimka() :msg() {}
  29.     virtual const char* what() const throw() {
  30.         return msg;
  31.     }
  32. };
  33.  
  34. class Trokut {
  35. private:
  36.     float a, b, c;
  37. public:
  38.     Trokut() : a(3), b(4), c(5) {};
  39.     Trokut(float _a, float _b, float _c) : a(_a), b(_b), c(_c) {
  40.         if ((_a + _b) > _c && (_a + _c) > _b && (_b + _c) > _a) {
  41.             a = _a;
  42.             b = _b;
  43.             c = _c;
  44.         }
  45.         else throw Geoiznimka(a, b, c);
  46.     }
  47.     float Povrsina() {
  48.         float s;
  49.         s = (a + b + c) / 2;
  50.         return sqrt(s*(s - a)*(s - b)*(s - c));
  51.        
  52.     }
  53.     float Opseg() {
  54.         return a + b + c;
  55.     }
  56.     bool Provjera() {
  57.         if (c == sqrt(a*a + b*b) || a == sqrt(c*c - b*b) || b == sqrt(c*c - a*a))
  58.             return true;
  59.         else
  60.             return false;
  61.     }
  62. };
  63.  
  64. int main() {
  65.     try {
  66.         Trokut T1;
  67.         Trokut T2(1, 2, 3);
  68.         cout << "Povrsina trokuta T1:" << T1.Povrsina() << endl;
  69.         cout << "Povrsina trokuta T2:" << T2.Povrsina() << endl;
  70.         if (T1.Povrsina()>T2.Povrsina()) {
  71.             cout << "Trokut T1(defaultni) je veci!" << endl;
  72.         }
  73.         else {
  74.             cout << "Trokut T2(parametarski) je veci!" << endl;
  75.         }
  76.     }
  77.     catch (Geoiznimka& iznimka) {
  78.         cout << "Trokut sa stranicama " << iznimka.a << ", " << iznimka.b << ", " << iznimka.c << " nije moguc." << endl;
  79.     }
  80.     system("pause");
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement