Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #define MAX 3
  4.  
  5. using namespace std;
  6.  
  7. int d=0;
  8.  
  9. class kolo{
  10. private:
  11. double kolo_x[MAX];
  12. double kolo_y[MAX];
  13. double kolo_r[MAX];
  14. public:
  15.  
  16. void pozyskaj_kolo(double x, double y, double r){
  17. kolo_x[d]=x;
  18. kolo_y[d]=y;
  19. kolo_r[d]=r;
  20. }
  21. void info_kolo(){
  22. cout<<"Polozenie kola: "<<endl;
  23. cout<<"Srodek kola : "<<kolo_x[d]<<";"<<kolo_y[d]<<endl;
  24. cout<<"Promien kola : "<<kolo_r[d]<<endl;
  25. }
  26. void skalowanie(double wsp){
  27. kolo_r[d]*=wsp;
  28. }
  29. void osiowa_kolo(char os,double odleglosc){
  30. if(os=='x'){
  31. kolo_y[d]=odleglosc+(odleglosc-kolo_y[d]);
  32. }else if(os=='y'){
  33. kolo_x[d]=odleglosc+(odleglosc-kolo_x[d]);
  34. }else
  35. exit(0);
  36. }
  37. };
  38. class trapez{
  39. private:
  40. double ax[MAX],ay[MAX],cx[MAX],cy[MAX],bx[MAX],by[MAX],dx[MAX],dy[MAX],dl_a[MAX],dl_b[MAX];
  41. public:
  42. void pozyskaj(double a1, double a2, double c1, double c2, double dla, double dlb){
  43.  
  44.  
  45.  
  46. ax[d]=a1;
  47. ay[d]=a2;
  48. cx[d]=c1;
  49. cy[d]=c2;
  50. bx[d]=ax[d]+dlb;
  51. by[d]=ay[d];
  52. dx[d]=cx[d]+dla;
  53. dy[d]=cy[d];
  54.  
  55. dl_a[d]=dla;
  56.  
  57. if(dl_a==0){
  58.  
  59. cout<<"Podstawa nie moze byc rowna zero"<<endl;
  60. dl_a[d]=20;
  61.  
  62. }else if(dl_a<0){
  63.  
  64. cout<<"Podstawa nie moze byc mniejsza od 0"<<endl;
  65. dl_a[d]=fabs(dl_a[d]);
  66.  
  67. }
  68.  
  69. dl_b[d]=dlb;
  70.  
  71. if(dl_b[d]==0){
  72.  
  73. cout<<"Sufit nie moze byc rowny 0"<<endl;
  74. dl_b[d]=20;
  75.  
  76. }else if(dl_b[d]<0){
  77.  
  78. cout<<"Sufit nie moze byc mniejszy od 0"<<endl;
  79. dl_b[d]=fabs(dl_b[d]);
  80.  
  81. }
  82. }
  83.  
  84. void info(){
  85.  
  86. cout<<"Aktualne pola: "<<endl;
  87. cout<<"Podstawa = "<<dl_a[d]<<endl;
  88. cout<<"Sufit = "<<dl_b[d]<<endl;
  89. cout<<"Lewy gorny wierzcholek : "<<ax[d]<<";"<<ay[d]<<endl;
  90. cout<<"Lewy dolny wierzcholek : "<<cx[d]<<";"<<cy[d]<<endl;
  91. cout<<"Prawy gorny wierzcholek : "<<bx[d]<<";"<<by[d]<<endl;
  92. cout<<"Prawy dolny wierzcholek : "<<dx[d]<<";"<<dy[d]<<endl;
  93.  
  94.  
  95.  
  96.  
  97. }
  98. void symetria(double s1, double s2){
  99.  
  100. ax[d]=2*s1-ax[d];
  101. ay[d]=2*s2-ay[d];
  102.  
  103. cx[d]=2*s1-cx[d];
  104. cy[d]=2*s2-cy[d];
  105.  
  106. bx[d]=2*s1-bx[d];
  107. by[d]=2*s2-by[d];
  108.  
  109. dx[d]=2*s1-dx[d];
  110. dy[d]=2*s2-dy[d];
  111.  
  112.  
  113.  
  114.  
  115. }
  116. void osiowa_trapez(char os, double odleglosc){
  117. if(os=='y'){
  118. ax[d]=odleglosc+(odleglosc-ax[d]);
  119. cx[d]=odleglosc+(odleglosc-cx[d]);
  120. bx[d]=odleglosc+(odleglosc-bx[d]);
  121. dx[d]=odleglosc+(odleglosc-dx[d]);
  122. }else if(os=='x'){
  123. ay[d]=odleglosc+(odleglosc-ay[d]);
  124. cy[d]=odleglosc+(odleglosc-cy[d]);
  125. by[d]=odleglosc+(odleglosc-by[d]);
  126. dy[d]=odleglosc+(odleglosc-dy[d]);
  127. }else{
  128. cout<<"Nie ma takiej osi!"<<endl;
  129. exit(0);
  130. }
  131. }
  132. };
  133.  
  134. int main(){
  135.  
  136. double ax,ay,cx,cy,gora,dol,p,q;
  137. double x_kolo,y_kolo,r_kolo,wsp;
  138. trapez k[MAX];
  139. kolo o[MAX];
  140. int wybor;
  141. double odl;
  142. int wybor2;
  143. char os;
  144. int ktore_kolo;
  145. int ktory_trapez;
  146. cout<<"Trapez rownolegly do osi X, Podaj wspolrzedne x lewego gornego wierzcholka : "<<endl;
  147. cin>>ax;
  148. cout<<"Podaj wspolrzedne y lewego gornego wierzcholka : "<<endl;
  149. cin>>ay;
  150. cout<<"Podaj wspolrzedne x lewego dolnego wierzcholka : "<<endl;
  151. cin>>cx;
  152. cout<<"Podaj wspolrzedne y lewego dolnego wierzcholka : "<<endl;
  153. cin>>cy;
  154. cout<<"Podaj dlugosc gornej podstawy : "<<endl;
  155. cin>>gora;
  156. cout<<"Podaj dlugosc dolnej podstawy : "<<endl;
  157. cin>>dol;
  158. cout<<"Podaj X punktu przeksztalcenia : "<<endl;
  159. cin>>p;
  160. cout<<"Podaj Y punkty przeksztalcenia : "<<endl;
  161. cin>>q;
  162.  
  163. for (int i=1;i<4;i++,d++){
  164. k[i-1].pozyskaj(i*ax,i*ay,i*cx,i*cy,i*dol,i*gora);
  165. k[i-1].info();
  166. }
  167.  
  168. cout<<"Kolo: Podaj srodek : "<<endl;
  169. cout<<"X: ";
  170. cin>>x_kolo;
  171. cout<<""<<endl;
  172. cout<<"Y: ";
  173. cin>>y_kolo;
  174. cout<<""<<endl;
  175. cout<<"Podaj promien kola: "<<endl;
  176. cout<<"R: ";
  177. cin>>r_kolo;
  178. cout<<""<<endl;
  179. cout<<"Podaj wspolczynnik skalowania: ";
  180. cin>>wsp;
  181. cout<<""<<endl;
  182. d=0;
  183. for(int i=1;i<4;i++,d++){
  184. o[i-1].pozyskaj_kolo(i*x_kolo,i*y_kolo,i*r_kolo);
  185. o[i-1].info_kolo();
  186. }
  187. cout<<"1.Kolo"<<endl;
  188. cout<<"2.Trapez"<<endl;
  189. cout<<"3.Wyjdz"<<endl;
  190. cout<<"Wybierz : ";
  191. cin>>wybor;
  192. switch(wybor){
  193. case 1:
  194. cout<<"Ktore kolo wybierasz? Przedzial(0;"<<MAX-1<<")"<<endl;
  195. cin>>ktore_kolo;
  196. d=ktore_kolo;
  197. if(ktore_kolo<0 || ktore_kolo >=3)
  198. return 0;
  199. cout<<"SYMETRIA SRODKOWA(1) CZY OSIOWA(2)?"<<endl;
  200. cin>>wybor2;
  201. switch(wybor2){
  202. case 1:
  203. cout<<"PRZED SKALOWANIEM"<<endl;
  204. o[ktore_kolo].info_kolo();
  205. cout<<"PO SKALOWANIU"<<endl;
  206. o[ktore_kolo].skalowanie(wsp);
  207. o[ktore_kolo].info_kolo();
  208. break;
  209. case 2:
  210. cout<<"DO KTOREJ OSI BEDZIE ROWNOLEGLA PROSTA? Y or X"<<endl;
  211. cin>>os;
  212. if(os!='x' && os!='y')
  213. return 0;
  214. cout<<"PODAJ ODLEGLOSC OD OSI DO PROSTEJ"<<endl;
  215. cin>>odl;
  216. cout<<"PRZED SYMETRIA OSIOWA"<<endl;
  217. o[d].info_kolo();
  218. cout<<"PO SYMETRII OSIOWEJ"<<endl;
  219. o[d].osiowa_kolo(os,odl);
  220. o[d].info_kolo();
  221. break;
  222. }
  223. break;
  224. case 2:
  225. cout<<"Ktory trapez wybierasz? Przedzial(0;"<<MAX-1<<")"<<endl;
  226. cin>>ktory_trapez;
  227. d=ktory_trapez;
  228. if(ktory_trapez<0 || ktory_trapez>=3)
  229. return 0;
  230. cout<<"SYMETRIA SRODKOWA(1) CZY OSIOWA(2)?"<<endl;
  231. cin>>wybor2;
  232. switch(wybor2){
  233. case 1:
  234. cout<<"PRZED SYMETRIA"<<endl;
  235. k[ktory_trapez].info();
  236. cout<<"PO SYMETRII"<<endl;
  237. k[ktory_trapez].symetria(p,q);
  238. k[ktory_trapez].info();
  239. break;
  240. case 2:
  241. cout<<"DO KTOREJ OSI BEDZIE ROWNOLEGLA PROSTA? Y or X"<<endl;
  242. cin>>os;
  243. if(os!='x' && os!='y')
  244. return 0;
  245. cout<<"PODAJ ODLEGLOSC OD OSI DO PROSTEJ"<<endl;
  246. cin>>odl;
  247. cout<<"PRZED SYMETRIA OSIOWA"<<endl;
  248. k[ktory_trapez].info();
  249. cout<<"PO SYMETRII OSIOWEJ"<<endl;
  250. k[ktory_trapez].osiowa_trapez(os, odl);
  251. k[ktory_trapez].info();
  252. break;
  253. }
  254. break;
  255. case 3:
  256. return 0;
  257. }
  258. return 0;
  259. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement