Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>
  4. #include <locale.h>
  5. #include <windows.h>
  6.  
  7. void inputDataForBoxWay1(struct Box* box, int i);
  8. void inputDataForBoxWay2(struct Box* box, int i);
  9. struct Box {
  10. int x, y, a;
  11. };
  12.  
  13. void inputDataForBox(struct Box* boxs, int N) {
  14. for (int i = 0; i < N; i++) {
  15. int answer;
  16. int flag;
  17. printf("Выберите способ создания квадратов: \n");
  18. printf("1. Создание квадрата по координатам центра и длине.\n");
  19. printf("2. Создание квадрата по координатам центра и координатам точки, лежащей на границе этого квадрата.\n");
  20. printf("3. Создание квадрата(квадратной оболочки) для двух других квадратов. (Как минимум нужно иметь 2 квадрата)\n");
  21. printf("Ваш ответ: ");
  22. scanf_s("%d", &answer);
  23. do {
  24. flag = 1;
  25. switch (answer) {
  26. case 1: {
  27. inputDataForBoxWay1(boxs, i);
  28. break;
  29. }
  30. case 2: {
  31. inputDataForBoxWay2(boxs, i);
  32. break;
  33. }
  34. case 3:
  35. break;
  36.  
  37. default:
  38. printf("Вы ввели некорректное значение.");
  39. flag = 0;
  40. break;
  41. }
  42. } while (flag == 0);
  43. }
  44. }
  45.  
  46. void inputDataForBoxWay1(struct Box* box, int i) {
  47. printf("Введите для квадрата №%d координаты центра (x,y) и его длину: ", i + 1);
  48. do {
  49. scanf_s("%d %d %d", &box[i].x, &box[i].y, &box[i].a);
  50. if (box[i].a <= 0) printf("Длина квадрата не может быть неположительной.\n");
  51. } while (box[i].a <= 0);
  52. }
  53.  
  54. void inputDataForBoxWay2(struct Box* box, int i) {
  55. int px, py;
  56. int flag;
  57. do {
  58. printf("Введите для квадрата №%d координаты центра (x,y) и координаты точки, лежащей на границе этого квадрата: ", i + 1);
  59. scanf_s("%d %d %d %d", &box[i].x, &box[i].y, &px, &py);
  60. flag = (abs(box[i].x - px) == abs(box[i].y - py));
  61. if (!flag) printf("Координаты точки, лежащей на границе этого квадрата, не создают квадрат.\n");
  62. } while (!flag);
  63. box[i].a = abs(box[i].x - px) * 2;
  64. }
  65.  
  66. void printDataBox(struct Box* boxs, int N) {
  67. for (int i = 0; i < N; i++)
  68. printf("Квадрат №%d: координаты центра (%d, %d), длина стороны %d\n", i+1, boxs[i].x, boxs[i].y, boxs[i].a);
  69. }
  70.  
  71. int boxContentThePoint(struct Box box, int px, int py) {
  72. if ((box.x - box.a <= px) && (box.x + box.a >= px) && (box.y + box.a >= py) && (box.y - box.a <= py)) return 1;
  73. else return 0;
  74. }
  75.  
  76. int checkBoxContentOtherBox(struct Box firstBox, struct Box secondBox) {
  77. if (boxContentThePoint(firstBox, secondBox.x, secondBox.y)) {
  78. int leftXDownYCondition = boxContentThePoint(firstBox, secondBox.x - secondBox.a, secondBox.y - secondBox.a);
  79. int rightXDownYCondition = boxContentThePoint(firstBox, secondBox.x + secondBox.a, secondBox.y - secondBox.a);
  80. int leftXUpYCondition = boxContentThePoint(firstBox, secondBox.x - secondBox.a, secondBox.y + secondBox.a);
  81. int rightXUpYCondition = boxContentThePoint(firstBox, secondBox.x + secondBox.a, secondBox.y + secondBox.a);
  82. if ((leftXDownYCondition + rightXDownYCondition + leftXUpYCondition + rightXUpYCondition) == 4) return 1;
  83. else return 0;
  84. }
  85. else return 0;
  86. }
  87.  
  88. int checkContactBoxs(struct Box firstBox, struct Box secondBox) {
  89.  
  90. }
  91.  
  92. int square(struct Box box) {
  93. return pow(box.a, 2);
  94. }
  95.  
  96. void main() {
  97. setlocale(LC_ALL, "rus");
  98.  
  99. struct Box* boxs;
  100. int N;
  101.  
  102. printf("Введите количество квадратов: ");
  103. scanf_s("%d", &N);
  104.  
  105. boxs = (struct Box*)malloc(N * sizeof(struct Box));
  106.  
  107. inputDataForBox(boxs, N);
  108. printDataBox(boxs, N);
  109.  
  110. //printf("%d", boxContentThePoint(boxs[0], 3, 3));
  111. //printf("%d", checkBoxContentOtherBox(boxs[0], boxs[1]));
  112.  
  113. getchar();
  114. getchar();
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement