G2A Many GEOs
SHARE
TWEET

Untitled

a guest Mar 28th, 2020 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top