Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Descrivere la figura geometrica circonferenza seguendo queste indicazioni
- - si dovrá poter creare una circonferenza in questi modi :
- * fornendo le coordinate del centro e la misura del raggio
- * fornendo solo la misura del raggio: sará creata una circonferenza
- centrata nell'origine
- * senza fornire alcun parametro: sará creata la circonferenza
- centrata nell'origine e raggio pari ad 1 (circonferenza goniometrica)
- Nota: una volta creata una circonferenza é immutabile
- - in ogni momento sará possibile
- * estrarre un qualunque dato della circonferenza
- * calcolare l'area
- * calcolare il perimetro
- * confrontare due circonferenze con il seguente criterio: una
- circonferenza é maggiore di un altra se il suo raggio é maggiore
- (implementare un metodo classico e poi con un overload di un
- operatore
- Sfruttando la classe precedente descrivere con una classe una corona
- circolare (la parte che risulta dalla sovrapposizione di due circonferenze
- concentriche ed esterna alla piú piccola e che ha una forma ad anello) :
- - si dovrá poter creare una circonferenza in questi modi:
- * passando al costruttore i due cerchi che definiscono la corona
- * passando le coordinate del centro e delle misure due raggi
- metodi:
- * area
- * spessore
- * perimetro interno corona
- * perimetro esterno
- * confrontare due corone con il seguente criterio: una
- corona é maggiore di un altra se e "piu' spessa"
- */
- #include <iostream>
- #include <cmath>
- #include <cstdlib>
- using namespace std;
- class Circonferenza
- {
- private:
- int xCentro = 0, yCentro = 0;
- int raggio = 0;
- public:
- Circonferenza(int _xCentro, int _yCentro, int _raggio)
- {
- if (_raggio <=0) throw string("raggio <=0");
- xCentro = xCentro;
- yCentro = _yCentro;
- raggio = _raggio;
- }
- Circonferenza() : Circonferenza(0,0,1) {}
- //costruttore per circonferenze
- //centrate nell'origine
- Circonferenza(int raggio) : Circonferenza(0,0,raggio) {}
- //GETTERS
- int getXCentro() {return xCentro;}
- int getYCentro() {return yCentro;}
- int getRaggio() {return raggio;}
- double Perimetro() { return 2*raggio*3.14; }
- double Area() { return 3.14 * raggio * raggio; }
- bool maggioreDi(Circonferenza altraCrf)
- {
- return (raggio > altraCrf.raggio);
- }
- bool operator >(Circonferenza altraCrf) //overload
- {
- return (raggio > altraCrf.raggio);
- }
- };
- class CoronaCircolare
- {
- private:
- Circonferenza crf_interna, crf_esterna;
- public:
- CoronaCircolare(Circonferenza _crf_interna, Circonferenza _crf_esterna)
- {
- if (crf_interna>crf_esterna) throw string("Non e' una corona circolare");
- crf_interna = _crf_interna;
- crf_esterna = _crf_esterna;
- }
- CoronaCircolare(int x, int y, int r_int, int r_est) :
- CoronaCircolare(Circonferenza(x,y,r_int), Circonferenza(x,y,r_est))
- { }
- CoronaCircolare() : CoronaCircolare(0,0,1,2) {}
- double Area()
- {
- return crf_esterna.Area() - crf_interna.Area();
- }
- double Spessore() {return crf_esterna.getRaggio() - crf_interna.getRaggio();}
- double Perimetro_interno() { return crf_interna.Perimetro();}
- double Perimetro_esterno() { return crf_esterna.Perimetro();}
- bool maggioreDi(CoronaCircolare altra)
- {
- return Spessore() > altra.Spessore();
- }
- bool operator> (CoronaCircolare altra)
- {
- return Spessore() > altra.Spessore();
- }
- };
- int main()
- {
- Circonferenza crf1(3,67,4);
- cout << "Perimetro: " << crf1.Perimetro() << endl;
- cout << "Area: " << crf1.Area() << endl;
- Circonferenza crf2(1,1,12);
- if (crf2.maggioreDi(crf1)) cout << "Maggiore\n";
- if (crf2 > crf1) cout << "Maggiore\n";
- CoronaCircolare c1; //costrutore 'vuoto', default
- cout << c1.Area() << endl;
- CoronaCircolare c2(3,6,10,15);
- cout << c2.Area() << endl;
- Circonferenza crf3(2,9,12);
- Circonferenza crf4(2,9,34);
- CoronaCircolare c3(crf3, crf4);
- cout << c3.Area() << endl;
- cout << c3.Spessore() << endl;
- cout << c3.Perimetro_interno() << endl;
- cout << c3.Perimetro_esterno() << endl;
- if (c3 > c2)
- cout << "c3 maggiore di c2\n";
- else
- cout << "c2 maggiore di c3\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement