Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2017, 19:04   #41
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
прямоугольник должен быть описан структурой из 4-х (четырёх) чисел: две абциссы и две ординаты.
Прямоугольник задан габаритами по х и по у, соответственно и в структуре два числа.
staccy вне форума Ответить с цитированием
Старый 05.06.2017, 19:26   #42
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от staccy Посмотреть сообщение
Прямоугольник задан габаритами по х и по у
Ну хорошо, размер прямоугольника вы знаете, а как вы узнаете где он находится в пространстве?
Вам бы геометрию подтянуть...
waleri вне форума Ответить с цитированием
Старый 05.06.2017, 19:31   #43
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
как вы узнаете где он находится в пространстве?
Почему же вдруг я не знаю где он находится?
По условию понятно, что центр прямоугольника находится в центре координатной плоскости, а стороны параллельны координатным осям. Для определения его местоположения достаточно габаритов.
staccy вне форума Ответить с цитированием
Старый 05.06.2017, 20:21   #44
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от staccy Посмотреть сообщение
По условию понятно
Мы с вами явно читаем разные условия. Собственно, в том, что читал я, прямым текстом сказано - заданных парой точек.
Но если центр всех прямоугольников находятся в центре координатной системы, то все эти прямоугольники пересекаются, так что и делать нечего...
waleri вне форума Ответить с цитированием
Старый 05.06.2017, 20:24   #45
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Но если центр всех прямоугольников находятся в центре координатной системы, то все эти прямоугольники пересекаются, так что и делать нечего...
Да, все пересекаются, но в условии ведь не просят проверить пересекаются они или нет. Просят построить это пересечение, а значит найти габариты или вершины нового прямоугольника, который построен на пересечении сторон двух первоначальных.
staccy вне форума Ответить с цитированием
Старый 05.06.2017, 21:33   #46
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию

Можно ведь преобразовать функцию пересечения в такой вид.
Или как-то так. Других идей нет. По условию это верно, но вряд ли работает.
Код:
Point Crossing(Point A, Point B){
	Point C;
    C.x = (A.x < B.x) ? A.x : B.x;
    C.y = (A.y < B.y) ? A.y : B.y;
    -С.x = (-A.x < -B.x) ? -A.x : -B.x;
    -C.y = (-A.y < -B.y) ? -A.y : -B.y;
    return C;

Последний раз редактировалось staccy; 05.06.2017 в 21:37.
staccy вне форума Ответить с цитированием
Старый 05.06.2017, 21:41   #47
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию

Не выдает ошибок при такой записи, но пишет координаты отрицательной вершины
Код:
Point Crossing(Point A, Point B){
	Point C;
    C.x = (A.x < B.x) ? A.x : B.x;
    C.y = (A.y < B.y) ? A.y : B.y;
    return C;
.
.
.
void main()
{
    setlocale(LC_ALL, "Russian");
    int N = 0,p;
    printf("\nКоличество прямоугольников= ");
    scanf("%d", &N);
    Rectangle q[100];//массив габаритов прямоугольников
	Point c[100];
    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[i]=Crossing(A,B);
    }
    printf("\nВы ввели:\n");
    printf("N\tx\ty\tПлощадь\tТочка\tПересечение\n");
    for (i = 0; i < N; ++i)
        printf("%d\t%d\t%d\t%.1f\t%d\t%d\t%d\n", i + 1, q[i].x, q[i].y, Area(q[i]),p,c[i].x,c[i].y);

    getchar();getchar();
}

Последний раз редактировалось staccy; 05.06.2017 в 21:43.
staccy вне форума Ответить с цитированием
Старый 06.06.2017, 01:24   #48
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от staccy Посмотреть сообщение
Прямоугольник задан габаритами по х и по у, соответственно и в структуре два числа.
неверный ответ.
прямоугольник задан четырьмя числами.
считайте сами
x– - первое число
x+ - второе число
y– - третье число
y+ - четвертое число.

впрочем, если я ошибаюсь в трактовке условия задачи и действительно x- равен по модулю x+, модуль y- равен y+ (а центр любого прямоугольника лежит в точке (0,0))
- то это бред, а не задание.

Последний раз редактировалось Serge_Bliznykov; 06.06.2017 в 01:29.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.06.2017, 07:40   #49
staccy
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в трактовке условия задачи и действительно x- равен по модулю x+, модуль y- равен y+ (а центр любого прямоугольника лежит в точке (0,0)) - то это бред, а не задание.
Преподаватель объяснил мне именно так, потому да - это бред, но надо решать.
staccy вне форума Ответить с цитированием
Старый 06.06.2017, 09:35   #50
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от staccy Посмотреть сообщение
Преподаватель объяснил мне именно так
понятно. очень "своеобразная" задача.

особенно мне интересно, как можно реализовать этот пункт:
Цитата:
построение прямоугольника по паре точек, задающих любую пару противолежащих вершин;
тут прямоугольники очень специфичные (центр строго в начале координат), поэтому далеко не для любой пары можно построить нужный прямоугольник.


а теперь по сути.
Цитата:
построение пересечения двух прямоугольников
насколько я понимаю, результатом этого пункта должен быть новый прямоугольник,
который равен
Код:
ширина = min ( ширина1, ширина2);
высота = min ( высота1, высота2).
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описать тип данных в виде структуры. pocheto Помощь студентам 3 29.12.2016 21:49
Реализовать struct Группа(group), в которой содержатся struct Студент(Student) TokaChan Помощь студентам 2 07.07.2016 07:22
описать тип 'шахматная доска' vadimc Помощь студентам 0 15.12.2012 10:54
Описать тип с данными о сотрудниках Масим Помощь студентам 13 24.03.2010 14:09