Guest User

Untitled

a guest
Jan 13th, 2018
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6. #include <iostream>
  7. #include <fstream>
  8.  
  9. #define n 50 //tutaj zdefiniowałem liczbe punktów do wylosowania
  10.  
  11. int tabA[n][2]; //tablica ze współrzędnymi może być globalna
  12. int x_min, x_max, y_min, y_max;
  13.  
  14.  
  15. void filling();
  16. void printing();
  17. void extremes();
  18. void fun();
  19.  
  20.  
  21.  
  22. int main()
  23. {
  24.  
  25.  
  26. filling();
  27. printing();
  28. extremes();
  29. fun();
  30.  
  31.  
  32. return 0;
  33. }
  34.  
  35.  
  36.  
  37. void filling() {
  38. srand((unsigned)time(NULL));
  39. for (int i = 0; i < n; i++) {
  40. for (int j = 0; j < 2; j++) {
  41. tabA[i][j] = (50)*rand() / (double)RAND_MAX;
  42. }
  43. }
  44. }
  45.  
  46.  
  47.  
  48. void printing() {
  49. for (int i = 0; i < n; i++) {
  50. printf("\n");
  51. for (int j = 0; j < 2; j++) {
  52. printf("%d ", tabA[i][j]);
  53. }
  54. }
  55. printf("\n\n\n");
  56. }
  57.  
  58.  
  59.  
  60. void extremes() {
  61.  
  62. int x_min = tabA[0][0];
  63. int x_max = tabA[0][0];
  64. int y_min = tabA[0][1];
  65. int y_max = tabA[0][1];
  66.  
  67.  
  68. for (int i = 0; i < n; i++) {
  69. if (x_min > tabA[i][0]) {
  70. x_min = tabA[i][0];
  71. }
  72. if (x_max < tabA[i][0]) {
  73. x_max = tabA[i][0];
  74. }
  75. }//znajdywanie największych i najmniejszych xów
  76.  
  77. for (int j = 0; j < n; j++) {
  78. if (y_min > tabA[j][1]) {
  79. y_min = tabA[j][1];
  80. }
  81. if (y_max < tabA[j][1]) {
  82. y_max = tabA[j][1];
  83. }
  84. }//znajdowanie największych i najmniejszych yków
  85.  
  86. printf("x_min = %d, x_max = %d\ny_min = %d y_max = %d\n\n", x_min, x_max, y_min, y_max);
  87.  
  88.  
  89. int area;
  90. area = (x_max - x_min)*(y_max - y_min);
  91. printf("Pole pierwszego prostokata to :%d\n\n\n", area);
  92.  
  93. }
  94.  
  95.  
  96.  
  97. void fun() {
  98.  
  99. int x1boku = -10000;
  100. int y1boku;
  101. int w1;
  102. for (int i = n; i >= -n; i--) {
  103. for (int j = 0; j < n; j++) {
  104. if(tabA[j][0] + i == tabA[j][1]) {
  105.  
  106.  
  107. x1boku = tabA[j][0];
  108. y1boku = tabA[j][1];
  109. w1 = i;
  110. printf("x1boku = %d y1boku = %d\n\n", x1boku, y1boku);
  111. printf("Rownanie pierwszego boku to x+%d\n\n\n", w1);
  112. break;
  113. }
  114.  
  115. }
  116. if (x1boku != -10000) {
  117. break;
  118. }
  119. }//funkcja licząca licząca lewy górny bok
  120.  
  121.  
  122.  
  123. int x2boku = -10000;
  124. int y2boku;
  125. int w2;
  126. for (int i = -n; i <= n; i++) {
  127. for (int j = 0; j < n; j++) {
  128. if (tabA[j][0] + i == tabA[j][1]) {
  129.  
  130.  
  131. x2boku = tabA[j][0];
  132. y2boku = tabA[j][1];
  133. w2 = i;
  134. printf("x2boku = %d y2boku = %d\n\n", x2boku, y2boku);
  135. printf("Rownanie drugiego boku to x+%d\n\n\n", w2);
  136. break;
  137. }
  138.  
  139. }
  140. if (x2boku != -10000) {
  141. break;
  142. }
  143. }//funkcja licząca prawy dolny bok
  144.  
  145.  
  146. int x3boku = -10000;
  147. int y3boku;
  148. int w3;
  149. for (int i = 0; i <= 2*n; i++) {
  150. for (int j = 0; j < n; j++) {
  151. if (-tabA[j][0] + i == tabA[j][1]) {
  152.  
  153.  
  154. x3boku = tabA[j][0];
  155. y3boku = tabA[j][1];
  156. w3 = i;
  157. printf("x3boku = %d y3boku = %d\n\n", x3boku, y3boku);
  158. printf("Rownanie trzeciego boku to -x+%d\n\n\n", w3);
  159. break;
  160. }
  161.  
  162. }
  163. if (x3boku != -10000) {
  164. break;
  165. }
  166. }//funkcja licząca lewy dolny bok
  167.  
  168.  
  169. int x4boku = -10000;
  170. int y4boku;
  171. int w4;
  172. for (int i = 2*n; i >= 0; i--) {
  173. for (int j = 0; j < n; j++) {
  174. if (-tabA[j][0] + i == tabA[j][1]) {
  175.  
  176.  
  177. x4boku = tabA[j][0];
  178. y4boku = tabA[j][1];
  179. w4 = i;
  180. printf("x4boku = %d y4boku = %d\n\n", x4boku, y4boku);
  181. printf("Rownanie czwartego boku to -x+%d\n\n\n", w4);
  182. break;
  183. }
  184.  
  185. }
  186. if (x4boku != -10000) {
  187. break;
  188. }
  189. }//funkcja licząca prawy górny róg
  190.  
  191.  
  192.  
  193.  
  194. //zabieramy się za wierzchołki mogą one znaleść się maksymalnie x<-25,75> but to be on a safe side sprawdzimy <-2*n,2*n>
  195.  
  196.  
  197. double xw1, yw1;
  198. for (double i = -100; i < 100; i = i + 0.5) {
  199. if (i + w1 == -i + w3) {
  200. xw1 = i;
  201. yw1 = i + w1;
  202. printf("Wspolrzedne pierwszego wierzcholka to x:%.2lf y:%.2lf\n\n", xw1, yw1);
  203. break;
  204. }
  205. }
  206.  
  207.  
  208. double xw2, yw2;
  209. for (double i = -100; i < 100; i=i+0.5) {
  210. if (i + w2 == -i + w3) {
  211. xw2 = i;
  212. yw2 = i + w2;
  213. printf("Wspolrzedne drugiego wierzcholka to x:%.2lf y:%.2lf\n\n", xw2, yw2);
  214. break;
  215. }
  216. }
  217.  
  218. double xw3, yw3;
  219. for (double i = -100; i < 100; i = i + 0.5) {
  220. if (i + w2 == -i + w4) {
  221. xw3 = i;
  222. yw3 = i + w2;
  223. printf("Wspolrzedne trzeciego wierzcholka to x:%.2lf y:%.2lf\n\n", xw3, yw3);
  224. break;
  225. }
  226. }
  227.  
  228. double xw4, yw4;
  229. for (double i = -100; i < 100; i = i + 0.5) {
  230. if (i + w1 == -i + w4) {
  231. xw4 = i;
  232. yw4 = i + w1;
  233. printf("Wspolrzedne czwartego wierzcholka to x:%.2lf y:%.2lf\n\n", xw4, yw4);
  234. break;
  235. }
  236. }
  237.  
  238. double pole;
  239. double bok1, bok2;
  240. bok1 = sqrt((xw2 - xw1)*(xw2 - xw1) + (yw2 - yw1)*(yw2 - yw1));
  241. bok2 = sqrt((xw3 - xw2)*(xw3 - xw2) + (yw3 - yw2)*(yw3 - yw2));
  242. pole = bok1*bok2;
  243. printf("Pole drugiego prostokata to %.2lf\n\n", pole);
  244.  
  245.  
  246.  
  247. }
Advertisement
Add Comment
Please, Sign In to add comment