Advertisement
sn0k3

Untitled

May 21st, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.49 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. #include <Windows.h>
  6.  
  7. struct Vertex {
  8. float x;
  9. float y;
  10. };
  11.  
  12. struct Triangle {
  13. struct Vertex a;
  14. struct Vertex b;
  15. struct Vertex c;
  16. };
  17.  
  18. struct TrianglePair {
  19. struct Triangle triangleA;
  20. struct Triangle triangleB;
  21. };
  22.  
  23. void saveIntoFile(FILE* file, struct TrianglePair triangle) {
  24. fprintf(file, "Dvoika s triugulnici: \n");
  25.  
  26. fprintf(file, "Triugulnik 1: A(%f, %f), B(%f, %f), C(%f, %f): ", triangle.triangleA.a.x, triangle.triangleA.a.y,
  27. triangle.triangleA.b.x, triangle.triangleA.b.y, triangle.triangleA.c.x, triangle.triangleA.c.y);
  28.  
  29. fprintf(file, "Triugulnik 2: A(%f, %f), B(%f, %f), C(%f, %f): ", triangle.triangleB.a.x, triangle.triangleB.a.y,
  30. triangle.triangleB.b.x, triangle.triangleB.b.y, triangle.triangleB.c.x, triangle.triangleB.c.y);
  31. }
  32.  
  33. void findThePairsWithEqualTriangles(struct TrianglePair triangles[], int numberOfTriangles) {
  34. // For the first triangle from the pair
  35. float sideAAB;
  36. float sideABC;
  37. float sideAAC;
  38.  
  39. // For the second triangle from the pair
  40. float sideBAB;
  41. float sideBBC;
  42. float sideBAC;
  43.  
  44. // Zapis na informaciqta vuv faila
  45. char fileName[30];
  46. printf("Ime na faila, v koito shte se zapishe informaciqta: ");
  47. scanf("%s", &fileName);
  48.  
  49. FILE* file = fopen(fileName, "w");
  50. if(file == NULL) {
  51. printf("Greshka pri otvarqneto na faila %s", fileName);
  52. return;
  53. }
  54.  
  55. for(int i = 0; i < numberOfTriangles; i++) {
  56. // Za purviq triugulnik v dvoikata
  57. float axSq = (triangles[i].triangleA.a.x - triangles[i].triangleA.b.x) * (triangles[i].triangleA.a.x - triangles[i].triangleA.b.x);
  58. float aySq = (triangles[i].triangleA.a.y - triangles[i].triangleA.b.y) * (triangles[i].triangleA.a.y - triangles[i].triangleA.b.y);
  59.  
  60. // Triangle 1, side AB
  61. sideAAB = sqrt(axSq + aySq);
  62.  
  63. float bxSq = (triangles[i].triangleA.b.x - triangles[i].triangleA.c.x) * (triangles[i].triangleA.b.x - triangles[i].triangleA.c.x);
  64. float bySq = (triangles[i].triangleA.b.y - triangles[i].triangleA.c.y) * (triangles[i].triangleA.b.y - triangles[i].triangleA.c.y);
  65.  
  66. // Triangle 1, side BC
  67. sideABC = sqrt(bxSq + bySq);
  68.  
  69. float cxSq = (triangles[i].triangleA.b.x - triangles[i].triangleA.c.x) * (triangles[i].triangleA.b.x - triangles[i].triangleA.c.x);
  70. float cySq = (triangles[i].triangleA.b.y - triangles[i].triangleA.c.y) * (triangles[i].triangleA.b.y - triangles[i].triangleA.c.y);
  71.  
  72. // Triangle 1, side AC
  73. sideAAC = sqrt(cxSq + cySq);
  74.  
  75.  
  76. // Za vtoriq triugulnik v dvoikata
  77. float triangleBaxSq = (triangles[i].triangleB.a.x - triangles[i].triangleB.b.x) * (triangles[i].triangleB.a.x - triangles[i].triangleB.b.x);
  78. float triangleBaySq = (triangles[i].triangleB.a.y - triangles[i].triangleB.b.y) * (triangles[i].triangleB.a.y - triangles[i].triangleB.b.y);
  79.  
  80. // Triangle 2, side AB
  81. sideBAB = sqrt(triangleBaxSq + triangleBaySq);
  82.  
  83. float triangleBbxSq = (triangles[i].triangleB.b.x - triangles[i].triangleB.c.x) * (triangles[i].triangleB.b.x - triangles[i].triangleB.c.x);
  84. float triangleBbySq = (triangles[i].triangleB.b.y - triangles[i].triangleB.c.y) * (triangles[i].triangleB.b.y - triangles[i].triangleB.c.y);
  85.  
  86. // Triangle 2, side BC
  87. sideBBC = sqrt(triangleBbxSq + triangleBbySq);
  88.  
  89. float triangleBcxSq = (triangles[i].triangleB.b.x - triangles[i].triangleB.c.x) * (triangles[i].triangleB.b.x - triangles[i].triangleB.c.x);
  90. float triangleBcySq = (triangles[i].triangleB.b.y - triangles[i].triangleB.c.y) * (triangles[i].triangleB.b.y - triangles[i].triangleB.c.y);
  91.  
  92. // Triangle 1, side AC
  93. sideBAC = sqrt(triangleBcxSq + triangleBcySq);
  94.  
  95.  
  96. if(sideAAB == sideABC && sideAAB == sideAAC && sideBAB == sideBBC && sideBAB == sideBAC) {
  97. saveIntoFile(file, triangles[i]);
  98. printf("Dvoikata e ravnostranna i e zapisana vuv faila!");
  99. }
  100. }
  101.  
  102. fclose(file);
  103. }
  104.  
  105. void findThePairsWithEqualSidedTriangles(struct TrianglePair triangles[], int numberOfTriangles) {
  106. // For the first triangle from the pair
  107. float sideAAB;
  108. float sideABC;
  109. float sideAAC;
  110.  
  111. // For the second triangle from the pair
  112. float sideBAB;
  113. float sideBBC;
  114. float sideBAC;
  115.  
  116.  
  117. // Zapis na informaciqta vuv faila
  118. char fileName[30];
  119. printf("Ime na faila, v koito shte se zapishe informaciqta: ");
  120. scanf("%s", &fileName);
  121.  
  122. FILE* file = fopen(fileName, "w");
  123. if(file == NULL) {
  124. printf("Greshka pri otvarqneto na faila %s", fileName);
  125. return;
  126. }
  127.  
  128. for(int i = 0; i < numberOfTriangles; i++) {
  129. // Za purviq triugulnik v dvoikata
  130. float axSq = (triangles[i].triangleA.a.x - triangles[i].triangleA.b.x) * (triangles[i].triangleA.a.x - triangles[i].triangleA.b.x);
  131. float aySq = (triangles[i].triangleA.a.y - triangles[i].triangleA.b.y) * (triangles[i].triangleA.a.y - triangles[i].triangleA.b.y);
  132.  
  133. // Triangle 1, side AB
  134. sideAAB = sqrt(axSq + aySq);
  135.  
  136. float bxSq = (triangles[i].triangleA.b.x - triangles[i].triangleA.c.x) * (triangles[i].triangleA.b.x - triangles[i].triangleA.c.x);
  137. float bySq = (triangles[i].triangleA.b.y - triangles[i].triangleA.c.y) * (triangles[i].triangleA.b.y - triangles[i].triangleA.c.y);
  138.  
  139. // Triangle 1, side BC
  140. sideABC = sqrt(bxSq + bySq);
  141.  
  142. float cxSq = (triangles[i].triangleA.a.x - triangles[i].triangleA.c.x) * (triangles[i].triangleA.a.x - triangles[i].triangleA.c.x);
  143. float cySq = (triangles[i].triangleA.a.y - triangles[i].triangleA.c.y) * (triangles[i].triangleA.a.y - triangles[i].triangleA.c.y);
  144.  
  145. // Triangle 1, side AC
  146. sideAAC = sqrt(cxSq + cySq);
  147.  
  148. // Za vtoriq triugulnik v dvoikata
  149. float triangleBaxSq = (triangles[i].triangleB.a.x - triangles[i].triangleB.b.x) * (triangles[i].triangleB.a.x - triangles[i].triangleB.b.x);
  150. float triangleBaySq = (triangles[i].triangleB.a.y - triangles[i].triangleB.b.y) * (triangles[i].triangleB.a.y - triangles[i].triangleB.b.y);
  151.  
  152. // Triangle 2, side AB
  153. sideBAB = sqrt(triangleBaxSq + triangleBaySq);
  154.  
  155. float triangleBbxSq = (triangles[i].triangleB.b.x - triangles[i].triangleB.c.x) * (triangles[i].triangleB.b.x - triangles[i].triangleB.c.x);
  156. float triangleBbySq = (triangles[i].triangleB.b.y - triangles[i].triangleB.c.y) * (triangles[i].triangleB.b.y - triangles[i].triangleB.c.y);
  157.  
  158. // Triangle 2, side BC
  159. sideBBC = sqrt(triangleBbxSq + triangleBbySq);
  160.  
  161. float triangleBcxSq = (triangles[i].triangleB.a.x - triangles[i].triangleB.c.x) * (triangles[i].triangleB.a.x - triangles[i].triangleB.c.x);
  162. float triangleBcySq = (triangles[i].triangleB.a.y - triangles[i].triangleB.c.y) * (triangles[i].triangleB.a.y - triangles[i].triangleB.c.y);
  163.  
  164. // Triangle 2, side AC
  165. sideBAC = sqrt(triangleBcxSq + triangleBcySq);
  166.  
  167.  
  168. printf("\nTriugulnik 1 ot dvoikata \n");
  169. printf("Duljinata AB: %f\n", sideAAB);
  170. printf("Duljinata BC: %f\n", sideABC);
  171. printf("Duljinata AC: %f\n", sideAAC);
  172.  
  173. printf("Triugulnik 2 ot dvoikata \n");
  174. printf("Duljinata AB: %f\n", sideBAB);
  175. printf("Duljinata BC: %f\n", sideBBC);
  176. printf("Duljinata AC: %f\n", sideBAC);
  177.  
  178.  
  179. if(sideAAB == sideABC || sideAAB == sideAAC || sideABC == sideAAC) {
  180. printf("Triugulnika e ravnobedren!\n");
  181. saveIntoFile(file, triangles[i]);
  182. } else {
  183. if(sideBAB == sideBBC || sideBAB == sideBAC || sideBBC == sideBAC) {
  184. printf("Triugulnik B e ravnobedren!\n");
  185. saveIntoFile(file, triangles[i]);
  186. } else {
  187. printf("Nqma ravnobedreni!\n");
  188. }
  189. }
  190. }
  191.  
  192. fclose(file);
  193. }
  194.  
  195. int menu() {
  196. int choice;
  197. printf("1.Namirane na dvoikite triugulnici, v koito i dvata triugulnika sa ravnostranni.\n");
  198. printf("2.Namirane na dvoikite triugulnici, v koito ima samo edin ravnobedren triugulnik.");
  199. printf("Molq, izberete [1-2]: ");
  200. scanf("%d", &choice);
  201.  
  202. return choice;
  203. }
  204.  
  205. int main()
  206. {
  207. int menu_inp = menu();
  208.  
  209. while(menu_inp != 0) {
  210. system("cls");
  211. int n;
  212. printf("Vuvedete kolko broq dvoiki triugulnici iskate da vuvedete: ");
  213. scanf("%d", &n);
  214.  
  215. // Dynamic memory allocating for N count * triangles
  216. struct TrianglePair* triangles = malloc(sizeof(struct TrianglePair) * n);
  217. if(triangles == NULL) {
  218. printf("Greshka!");
  219. return -1;
  220. }
  221.  
  222. for(int i = 0; i < n; i++) {
  223. printf("Dvoika triugulnici nomer %d, Triugulnik 1 \n", i + 1);
  224. printf("Vuvedete koordinati za tochka A\n");
  225. printf("A.x = ");
  226. scanf("%f", &triangles[i].triangleA.a.x);
  227. printf("A.y = ");
  228. scanf("%f", &triangles[i].triangleA.a.y);
  229.  
  230. printf("Vuvedete koordinati za tochka B\n");
  231. printf("B.x = ");
  232. scanf("%f", &triangles[i].triangleA.b.x);
  233. printf("B.y = ");
  234. scanf("%f", &triangles[i].triangleA.b.y);
  235.  
  236. printf("Vuvedete koordinati za tochka C\n");
  237. printf("C.x = ");
  238. scanf("%f", &triangles[i].triangleA.c.x);
  239. printf("C.y = ");
  240. scanf("%f", &triangles[i].triangleA.c.y);
  241.  
  242. printf("\n\n");
  243.  
  244. printf("Dvoika triugulnici nomer %d, Triugulnik 2 \n", i + 1);
  245. printf("Vuvedete koordinati za tochka A\n");
  246. printf("A.x = ");
  247. scanf("%f", &triangles[i].triangleB.a.x);
  248. printf("A.y = ");
  249. scanf("%f", &triangles[i].triangleB.a.y);
  250.  
  251. printf("Vuvedete koordinati za tochka B\n");
  252. printf("B.x = ");
  253. scanf("%f", &triangles[i].triangleB.b.x);
  254. printf("B.y = ");
  255. scanf("%f", &triangles[i].triangleB.b.y);
  256.  
  257. printf("Vuvedete koordinati za tochka C\n");
  258. printf("C.x = ");
  259. scanf("%f", &triangles[i].triangleB.c.x);
  260. printf("C.y = ");
  261. scanf("%f", &triangles[i].triangleB.c.y);
  262. }
  263.  
  264. if(menu_inp == 1) {
  265. findThePairsWithEqualTriangles(triangles, n);
  266. }
  267. else if(menu_inp == 2) {
  268. findThePairsWithEqualSidedTriangles(triangles, n);
  269. }
  270.  
  271. menu_inp = menu();
  272. }
  273.  
  274.  
  275.  
  276. system("Pause");
  277. return 0;
  278. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement