Rok 2009

1. (10 bodova) Napisati funkciju void Zadatak koja prima tri cijela broja (a, b, c), a na ekranu ispisuje koliko ima brojeva koji su djeljivi s manjim brojem od a i b, u intervalu (manji_broj – veci_broj). Također ispisuje umnožak svih brojeva koji su djeljivi sa c u tom intervalu. U main funkciji pozvati funkciju Zadatak sa proizvoljnim parametrima. 2. (15 bodova) Napisati klasu Complex koja predstavlja kompleksni broj s parametrima float re, im - predstavljaju realni i imaginarni dio kompleksnog broja. Za zadanu klasu potrebno je napisati konstruktor (podrazumijevajući, koji postavlja kompleksni broj na 1, te konstruktor sa dva parametra), funkciju za ispis kompleksnog broja void ispis, te funkcije za overload operatora za množenje. U klasi Complex parametri re i im moraju imati privatno pravo pristupa! U main funkciji kreirati dva kompleksna broja, te ispisati na ekran njihov umnožak, koristeći funkciju za ispis i definirane operatore. 3. (20 bodova) Napisati klasu Trokut koje ima za parametre (privatno pravo pristupa!) duljine stranica a, b i c. Klasa Trokut ima dva konstruktora - jedan bez parametara koji postavlja duljine stranica a, b, c na 3, 4, 5 i drugi koji kao parametre uzima duljine stranica int a, b, c . U klasi postoje i dvije metode povrsina() i opseg() koje vraćaju površinu i opseg trokuta. Ukoliko nije moguće izračunati površinu trokuta (dio ispod korijena u donjoj formuli za površinu negativan ili jednak nuli) u klasi Trokut 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 praznim 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 ukoliko je to slučaj ("Trokut T1 ima vecu povrsinu", "Trokut T2 ima vecu povrsinu" ili "Povrsine T1 i T2 su jednake"). Napomena: površina raznostraničnog trokuta P=√s(s-a)(s-b)(s-c) , gdje je s poluopseg.

Napomena: Rješenja proizvoljnih zadataka se neće priznati - biti će priznata samo rješenja koja odgovaraju zadatcima zadanim u pismenom ispitu! Ostala “rješenja“ neće biti uzeta u obzir.

1.
#include <iostream>

using namespace std; void Zadatak(int a, int b, int c){ int brojac=0,manji,veci,umnozak=1; if(a>b){ veci=a; manji=b; } if(b>a){ veci=b; manji=b; } for(int i=manji;i<=veci;i++){ if(i%manji==0){ brojac++; } if(i%c==0){ umnozak=umnozak*i; } } cout<<"Brojevi koji su djeljivi s "<<manji<<" ima "<<brojac<<endl; cout<<"Umnozak svih brojeva u intervalu "<<manji<<" do "<<veci<<" koji su djeljivi s "<<c<<" ima "<<umnozak<<endl; } int main(){ int a=25,b=1,c=4; Zadatak(a,b,c); return 0; }

2.

#include <iostream> using namespace std; class Complex{ float re,im; public: Complex(float c_re=1, float c_im=1): re(c_re), im(c_im){} void ispis(){ cout<<"Realni dio= "<<re; cout<<" Imaginarni dio= "<<im; } Complex operator *(Complex &a){ return Complex(((a.re*re)+(a.im*im)),((a.re*im)+(a.im*re))); } //Ovo se NE traži u zadatku ali ovo ti je kad bi umjesto umnoška tražio zbroj. //Complex operator + (Complex &a){ // return Complex((a.re+re),(a.im+im)); //}

}; int main(){ Complex z1(5,10); Complex z2(20,30); Complex z3; Complex z4; z3=z1*z2; z3.ispis(); // z4=z1+z2; Ovo korisit ako se u zad. traži zbrajanje // z4.ispis(): return 0; }

3.

#include <iostream> #include <cmath> using namespace std; class GeoIznimka{ private: int a,b,c; public: GeoIznimka(int c_a, int c_b, int c_c): a(c_a), b(c_b), c(c_c){} void Ispisi(){ cerr<<"Trokut sa stranicama:"<<a<<", "<<b<<", "<<c<<" nije moguc"<<endl; } }; class Trokut{ private: int a, b, c; public: Trokut(int c_a, int c_b, int c_c): a(c_a), b(c_b), c(c_c){} Trokut(){ a=3; b=4; c=5; } int Opseg(){ return a+b+c; } float Povrsina(){ float s,povr; s=Opseg()/2; povr=sqrt(s*(s-a)*(s-b)*(s-c)); if(povr<=0){ throw GeoIznimka(a,b,c); } return povr; } };

int main(){ Trokut t1; Trokut t2(4,4,4); try{ cout<<"Trokut 1 povrsina: "<<t1.Povrsina()<<endl; cout<<"Trokut 2 povrsina: "<<t2.Povrsina()<<endl; if(t1.Povrsina()<t2.Povrsina()){ cout<<"Trokut T2 ima vecu povrsinu"<<endl; } else if(t2.Povrsina()<t1.Povrsina()){ cout<<"Trokut T1 ima vecu povrsinu"<<endl; } else{ cout<<"Povrsine T1 i T2 su jednake"<<endl; } }catch (GeoIznimka &pov){ pov.Ispisi(); } return 0; }

Sign up to vote on this title
UsefulNot useful