Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- #include <locale.h>
- #include <windows.h>
- void inputDataForBoxWay1(struct Box* box, int i);
- void inputDataForBoxWay2(struct Box* box, int i);
- struct Box {
- int x, y, a;
- };
- void inputDataForBox(struct Box* boxs, int N) {
- for (int i = 0; i < N; i++) {
- int answer;
- int flag;
- printf("Выберите способ создания квадратов: \n");
- printf("1. Создание квадрата по координатам центра и длине.\n");
- printf("2. Создание квадрата по координатам центра и координатам точки, лежащей на границе этого квадрата.\n");
- printf("3. Создание квадрата(квадратной оболочки) для двух других квадратов. (Как минимум нужно иметь 2 квадрата)\n");
- printf("Ваш ответ: ");
- scanf_s("%d", &answer);
- do {
- flag = 1;
- switch (answer) {
- case 1: {
- inputDataForBoxWay1(boxs, i);
- break;
- }
- case 2: {
- inputDataForBoxWay2(boxs, i);
- break;
- }
- case 3:
- break;
- default:
- printf("Вы ввели некорректное значение.");
- flag = 0;
- break;
- }
- } while (flag == 0);
- }
- }
- void inputDataForBoxWay1(struct Box* box, int i) {
- printf("Введите для квадрата №%d координаты центра (x,y) и его длину: ", i + 1);
- do {
- scanf_s("%d %d %d", &box[i].x, &box[i].y, &box[i].a);
- if (box[i].a <= 0) printf("Длина квадрата не может быть неположительной.\n");
- } while (box[i].a <= 0);
- }
- void inputDataForBoxWay2(struct Box* box, int i) {
- int px, py;
- int flag;
- do {
- printf("Введите для квадрата №%d координаты центра (x,y) и координаты точки, лежащей на границе этого квадрата: ", i + 1);
- scanf_s("%d %d %d %d", &box[i].x, &box[i].y, &px, &py);
- flag = (abs(box[i].x - px) == abs(box[i].y - py));
- if (!flag) printf("Координаты точки, лежащей на границе этого квадрата, не создают квадрат.\n");
- } while (!flag);
- box[i].a = abs(box[i].x - px) * 2;
- }
- void printDataBox(struct Box* boxs, int N) {
- for (int i = 0; i < N; i++)
- printf("Квадрат №%d: координаты центра (%d, %d), длина стороны %d\n", i+1, boxs[i].x, boxs[i].y, boxs[i].a);
- }
- int boxContentThePoint(struct Box box, int px, int py) {
- if ((box.x - box.a <= px) && (box.x + box.a >= px) && (box.y + box.a >= py) && (box.y - box.a <= py)) return 1;
- else return 0;
- }
- int checkBoxContentOtherBox(struct Box firstBox, struct Box secondBox) {
- if (boxContentThePoint(firstBox, secondBox.x, secondBox.y)) {
- int leftXDownYCondition = boxContentThePoint(firstBox, secondBox.x - secondBox.a, secondBox.y - secondBox.a);
- int rightXDownYCondition = boxContentThePoint(firstBox, secondBox.x + secondBox.a, secondBox.y - secondBox.a);
- int leftXUpYCondition = boxContentThePoint(firstBox, secondBox.x - secondBox.a, secondBox.y + secondBox.a);
- int rightXUpYCondition = boxContentThePoint(firstBox, secondBox.x + secondBox.a, secondBox.y + secondBox.a);
- if ((leftXDownYCondition + rightXDownYCondition + leftXUpYCondition + rightXUpYCondition) == 4) return 1;
- else return 0;
- }
- else return 0;
- }
- int checkContactBoxs(struct Box firstBox, struct Box secondBox) {
- }
- int square(struct Box box) {
- return pow(box.a, 2);
- }
- void main() {
- setlocale(LC_ALL, "rus");
- struct Box* boxs;
- int N;
- printf("Введите количество квадратов: ");
- scanf_s("%d", &N);
- boxs = (struct Box*)malloc(N * sizeof(struct Box));
- inputDataForBox(boxs, N);
- printDataBox(boxs, N);
- //printf("%d", boxContentThePoint(boxs[0], 3, 3));
- //printf("%d", checkBoxContentOtherBox(boxs[0], boxs[1]));
- getchar();
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement