Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #define MAX 3
- using namespace std;
- int d=0;
- class kolo{
- private:
- double kolo_x[MAX];
- double kolo_y[MAX];
- double kolo_r[MAX];
- public:
- void pozyskaj_kolo(double x, double y, double r){
- kolo_x[d]=x;
- kolo_y[d]=y;
- kolo_r[d]=r;
- }
- void info_kolo(){
- cout<<"Polozenie kola: "<<endl;
- cout<<"Srodek kola : "<<kolo_x[d]<<";"<<kolo_y[d]<<endl;
- cout<<"Promien kola : "<<kolo_r[d]<<endl;
- }
- void skalowanie(double wsp){
- kolo_r[d]*=wsp;
- }
- void osiowa_kolo(char os,double odleglosc){
- if(os=='x'){
- kolo_y[d]=odleglosc+(odleglosc-kolo_y[d]);
- }else if(os=='y'){
- kolo_x[d]=odleglosc+(odleglosc-kolo_x[d]);
- }else
- exit(0);
- }
- };
- class trapez{
- private:
- double ax[MAX],ay[MAX],cx[MAX],cy[MAX],bx[MAX],by[MAX],dx[MAX],dy[MAX],dl_a[MAX],dl_b[MAX];
- public:
- void pozyskaj(double a1, double a2, double c1, double c2, double dla, double dlb){
- ax[d]=a1;
- ay[d]=a2;
- cx[d]=c1;
- cy[d]=c2;
- bx[d]=ax[d]+dlb;
- by[d]=ay[d];
- dx[d]=cx[d]+dla;
- dy[d]=cy[d];
- dl_a[d]=dla;
- if(dl_a==0){
- cout<<"Podstawa nie moze byc rowna zero"<<endl;
- dl_a[d]=20;
- }else if(dl_a<0){
- cout<<"Podstawa nie moze byc mniejsza od 0"<<endl;
- dl_a[d]=fabs(dl_a[d]);
- }
- dl_b[d]=dlb;
- if(dl_b[d]==0){
- cout<<"Sufit nie moze byc rowny 0"<<endl;
- dl_b[d]=20;
- }else if(dl_b[d]<0){
- cout<<"Sufit nie moze byc mniejszy od 0"<<endl;
- dl_b[d]=fabs(dl_b[d]);
- }
- }
- void info(){
- cout<<"Aktualne pola: "<<endl;
- cout<<"Podstawa = "<<dl_a[d]<<endl;
- cout<<"Sufit = "<<dl_b[d]<<endl;
- cout<<"Lewy gorny wierzcholek : "<<ax[d]<<";"<<ay[d]<<endl;
- cout<<"Lewy dolny wierzcholek : "<<cx[d]<<";"<<cy[d]<<endl;
- cout<<"Prawy gorny wierzcholek : "<<bx[d]<<";"<<by[d]<<endl;
- cout<<"Prawy dolny wierzcholek : "<<dx[d]<<";"<<dy[d]<<endl;
- }
- void symetria(double s1, double s2){
- ax[d]=2*s1-ax[d];
- ay[d]=2*s2-ay[d];
- cx[d]=2*s1-cx[d];
- cy[d]=2*s2-cy[d];
- bx[d]=2*s1-bx[d];
- by[d]=2*s2-by[d];
- dx[d]=2*s1-dx[d];
- dy[d]=2*s2-dy[d];
- }
- void osiowa_trapez(char os, double odleglosc){
- if(os=='y'){
- ax[d]=odleglosc+(odleglosc-ax[d]);
- cx[d]=odleglosc+(odleglosc-cx[d]);
- bx[d]=odleglosc+(odleglosc-bx[d]);
- dx[d]=odleglosc+(odleglosc-dx[d]);
- }else if(os=='x'){
- ay[d]=odleglosc+(odleglosc-ay[d]);
- cy[d]=odleglosc+(odleglosc-cy[d]);
- by[d]=odleglosc+(odleglosc-by[d]);
- dy[d]=odleglosc+(odleglosc-dy[d]);
- }else{
- cout<<"Nie ma takiej osi!"<<endl;
- exit(0);
- }
- }
- };
- int main(){
- double ax,ay,cx,cy,gora,dol,p,q;
- double x_kolo,y_kolo,r_kolo,wsp;
- trapez k[MAX];
- kolo o[MAX];
- int wybor;
- double odl;
- int wybor2;
- char os;
- int ktore_kolo;
- int ktory_trapez;
- cout<<"Trapez rownolegly do osi X, Podaj wspolrzedne x lewego gornego wierzcholka : "<<endl;
- cin>>ax;
- cout<<"Podaj wspolrzedne y lewego gornego wierzcholka : "<<endl;
- cin>>ay;
- cout<<"Podaj wspolrzedne x lewego dolnego wierzcholka : "<<endl;
- cin>>cx;
- cout<<"Podaj wspolrzedne y lewego dolnego wierzcholka : "<<endl;
- cin>>cy;
- cout<<"Podaj dlugosc gornej podstawy : "<<endl;
- cin>>gora;
- cout<<"Podaj dlugosc dolnej podstawy : "<<endl;
- cin>>dol;
- cout<<"Podaj X punktu przeksztalcenia : "<<endl;
- cin>>p;
- cout<<"Podaj Y punkty przeksztalcenia : "<<endl;
- cin>>q;
- for (int i=1;i<4;i++,d++){
- k[i-1].pozyskaj(i*ax,i*ay,i*cx,i*cy,i*dol,i*gora);
- k[i-1].info();
- }
- cout<<"Kolo: Podaj srodek : "<<endl;
- cout<<"X: ";
- cin>>x_kolo;
- cout<<""<<endl;
- cout<<"Y: ";
- cin>>y_kolo;
- cout<<""<<endl;
- cout<<"Podaj promien kola: "<<endl;
- cout<<"R: ";
- cin>>r_kolo;
- cout<<""<<endl;
- cout<<"Podaj wspolczynnik skalowania: ";
- cin>>wsp;
- cout<<""<<endl;
- d=0;
- for(int i=1;i<4;i++,d++){
- o[i-1].pozyskaj_kolo(i*x_kolo,i*y_kolo,i*r_kolo);
- o[i-1].info_kolo();
- }
- cout<<"1.Kolo"<<endl;
- cout<<"2.Trapez"<<endl;
- cout<<"3.Wyjdz"<<endl;
- cout<<"Wybierz : ";
- cin>>wybor;
- switch(wybor){
- case 1:
- cout<<"Ktore kolo wybierasz? Przedzial(0;"<<MAX-1<<")"<<endl;
- cin>>ktore_kolo;
- d=ktore_kolo;
- if(ktore_kolo<0 || ktore_kolo >=3)
- return 0;
- cout<<"SYMETRIA SRODKOWA(1) CZY OSIOWA(2)?"<<endl;
- cin>>wybor2;
- switch(wybor2){
- case 1:
- cout<<"PRZED SKALOWANIEM"<<endl;
- o[ktore_kolo].info_kolo();
- cout<<"PO SKALOWANIU"<<endl;
- o[ktore_kolo].skalowanie(wsp);
- o[ktore_kolo].info_kolo();
- break;
- case 2:
- cout<<"DO KTOREJ OSI BEDZIE ROWNOLEGLA PROSTA? Y or X"<<endl;
- cin>>os;
- if(os!='x' && os!='y')
- return 0;
- cout<<"PODAJ ODLEGLOSC OD OSI DO PROSTEJ"<<endl;
- cin>>odl;
- cout<<"PRZED SYMETRIA OSIOWA"<<endl;
- o[d].info_kolo();
- cout<<"PO SYMETRII OSIOWEJ"<<endl;
- o[d].osiowa_kolo(os,odl);
- o[d].info_kolo();
- break;
- }
- break;
- case 2:
- cout<<"Ktory trapez wybierasz? Przedzial(0;"<<MAX-1<<")"<<endl;
- cin>>ktory_trapez;
- d=ktory_trapez;
- if(ktory_trapez<0 || ktory_trapez>=3)
- return 0;
- cout<<"SYMETRIA SRODKOWA(1) CZY OSIOWA(2)?"<<endl;
- cin>>wybor2;
- switch(wybor2){
- case 1:
- cout<<"PRZED SYMETRIA"<<endl;
- k[ktory_trapez].info();
- cout<<"PO SYMETRII"<<endl;
- k[ktory_trapez].symetria(p,q);
- k[ktory_trapez].info();
- break;
- case 2:
- cout<<"DO KTOREJ OSI BEDZIE ROWNOLEGLA PROSTA? Y or X"<<endl;
- cin>>os;
- if(os!='x' && os!='y')
- return 0;
- cout<<"PODAJ ODLEGLOSC OD OSI DO PROSTEJ"<<endl;
- cin>>odl;
- cout<<"PRZED SYMETRIA OSIOWA"<<endl;
- k[ktory_trapez].info();
- cout<<"PO SYMETRII OSIOWEJ"<<endl;
- k[ktory_trapez].osiowa_trapez(os, odl);
- k[ktory_trapez].info();
- break;
- }
- break;
- case 3:
- return 0;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement