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 vraćaju 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 moguć" 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 veću
- površinu odnosno da su površine jednake.*/
- #include <iostream>
- #include <cmath>
- #include <string>
- using namespace std;
- class GeoIznimka : public runtime_error {
- private:
- double strA, strB, strC;
- public:
- GeoIznimka(double a, double b, double c, string msg) : runtime_error(msg), strA(a), strB(b), strC(c){}
- };
- class Trokut {
- private:
- double strA, strB, strC;
- public:
- Trokut() : strA(1), strB(1), strC(1){}
- Trokut(double a, double b, double c) : strA(a), strB(b), strC(c){
- if (strA >= strB + strC || strB >= strA + strC || strC >= strA + strB || strA*strB*strC == 0){
- throw GeoIznimka(a, b, c, "Nije trokut.");
- }
- }
- double povrsina();
- double opseg();
- bool provjera ();
- friend bool operator==(const Trokut& T1, const Trokut& T2);
- };
- bool operator==(const Trokut& T1, const Trokut& T2){
- return (T1.strA == T2.strA && T1.strB == T2.strB && T1.strC == T2.strC);
- }
- double Trokut::povrsina(){
- double s = (strA + strB + strC) / 2;
- double sqrt = (s*(s - strA)*(s - strB)*(s - strC));
- return sqrt;
- }
- double Trokut::opseg(){
- return (strA + strB + strC);
- }
- bool Trokut::provjera (){
- if (strC == sqrt(strA * strA + strB * strB)){ //Pitagorin poučak
- return true;
- }
- else{
- return false;
- }
- }
- int main(){
- try{
- Trokut T1(1, 2, 3);
- Trokut T2(4, 4, 4);
- Trokut T3(3, 4, 5);
- Trokut T4(5, 3, 4);
- cout << "PRVI\t" << "Opseg: " << T1.opseg() << "\tPovrsina: " << T1.povrsina() << endl;
- cout << "DRUGI\t " << "Opseg: " << T2.opseg() << "\tPovrsina: " << T2.povrsina() << endl;
- if (T1 == T2)
- cout << "Trokuti su jednaki" << endl;
- else
- cout << "Trokuti nisu jednaki." << endl;
- if (T2.provjera()){
- cout << "Trokut je pravokutan." << endl;
- }
- else{
- cout << "Nije pravokutan.\n" << endl;
- }
- cout << "TRECI\t" << "Opseg: " << T3.opseg() << "\tPovrsina: " << T3.povrsina() << endl;
- cout << "CETVRTI\t " << "Opseg: " << T4.opseg() << "\tPovrsina: " << T4.povrsina() << endl;
- }
- catch (const GeoIznimka& iznimka){
- cout << iznimka.what();
- }
- cin.get();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement