Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11730
Последний выпуск: 19.06.2015

Описать тип struct Rectangle

81K
05 июня
ross_
12 / / 14.03.2017
Описать тип struct Rectangle, задающий на плоскости замкнутый прямоугольник со сторонами, параллельными координатным осям и габаритами (x–, x+) и (y–, y+) по осям абсцисс и ординат соответственно. Реализовать в виде отдельных функций следующие операции над переменными этого типа: а) вычисление площади прямоугольника; б) построение прямоугольника по паре точек, задающих любую пару противолежащих вершин; в) построение пересечения двух прямоугольников; г) проверка принадлежности точки прямоугольнику; д) проверка включения одного прямоугольника в другой; е) поворот прямоугольника относительно центра на прямой угол. С использованием описанных типа и функций разработать программу, которая для заданного набора из N прямоугольников находит: 1) площадь наименьшего из прямоугольников, содержащего в себе один и более прямоугольников из заданного набора; 2) все пары прямоугольников, совпадающих с точностью до поворота на прямой угол.

При попытках тестирования функций появляются ошибки типа error C2660: Crossing: функция не принимает 1 аргументов
Но если объявить Rectangle A,B, то нужно заново заполнять эти параметры, A.x и т.д. уже используются в программе и снова появляется ошибка. Вообще, насколько понимаю, эта функция работает неправильно, т.к. в нее поступают не точки, а габариты прямоугольников.
Через Point A, Point B есть параметры только одного прямоугольника, что дает неверное решение.
Помогите разобраться.
Код:
#include <stdio.h>
#include <math.h>
#include <locale.h>

typedef struct//тип, описывающий прямоугольник
{
    int x;  
    int y;
} Rectangle;

typedef struct
{
    int x;
    int y;
}Point;

/*функция а)вычисление площади прямоугольника*/
float Area(Rectangle q)
{
    float S = 0;
    S = 4 * fabs((float(q.x))*(float(q.y)));
    return S;
}
/*функция б)построение прямоугольника по паре точек,
задающих любую пару противолежащих вершин*/

Rectangle For_two_points(Point A, Point B)
{
    Rectangle P;
    P.x = fabs((float(B.x) - float(A.x))/2);
    P.y = fabs((float(B.y) - float(A.y))/2);
    return P;
}
/*функция в)построение пересечения двух прямоугольников*/
Rectangle Crossing(Rectangle A, Rectangle B){
     Rectangle C;
    C.x = (A.x < B.x) ? A.x : B.x;
    C.y = (A.y < B.y) ? A.y : B.y;
    return C;
}
/*функция г) проверка принадлежности точки прямоугольнику*/
int Point_in_rectangle(Rectangle q){
    Point C;
    printf("Введите точку:n");
    scanf("%d%d", &C.x, &C.y);
    return ((C.y <= q.y) && (C.y >= -q.y) && (C.x <= q.x) && (C.x >= -q.x));
}
/*функция д) проверка включения одного прямоугольника в другой*/
int Inside(Rectangle A, Rectangle B)
{
    return ((A.x <= B.x && A.y <= B.y) || (A.x >= B.x && A.y >= B.y));
}
/*функция е) поворот прямоугольника относительно центра на прямой угол*/
Rectangle Turning(Rectangle q){
    int tmp = q.x;
    q.x=q.y;
    q.y=tmp;
    return q;
}

void main()
{
    setlocale(LC_ALL, "Russian");
    int N = 0,p;
    printf("nКоличество прямоугольников= ");
    scanf("%d", &N);
    Rectangle q[100];
    Rectangle c;
    printf("n");

    Point A, B;
    int i;  //счетчик
    for (i = 0; i < N; ++i)
    {
        printf("%d) Точки A, B: ", i + 1);
        scanf("%d%d%d%d", &A.x, &A.y, &B.x, &B.y);
        q[i] = For_two_points(A, B);
        p = Point_in_rectangle(q[i]);
        c = Crossing(q[i]);
    }

    printf("nВы ввели:n");
    printf("NtxtytПлощадьtТочкаtПересечениеn");
    for (i = 0; i < N; ++i)
        printf("%dt%dt%dt%.1ft%dt%dt%dn", i + 1, q[i].x, q[i].y, Area(q[i]),p,c.x,c.y);

    getchar();getchar();
}

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог