• Твой профиль заполнен на 0%. Заполни за 1 минуту, чтобы тебя нашли единомышленники и работодатели. Заполнить →

Задача На Прямоугольники

  • Автор темы Автор темы KOMPNET
  • Дата начала Дата начала
K

KOMPNET

Даны положительные действительные числа a,b,c,d. Выяснить, можно ли один из прямоугольников целиком поместить внутри другого прямоугольника. Числа a,b определяют стороны 1 прямоугольника, а c и d второго прямоугольника, при условии, что прямоугольник можно поместить в другой прямоугольник под некоторым углом, хотя ширина его может быть больше, чем у другого. Вот тут как быть?
 
интересная математическая задача. Я подумаю )
 
щас набросал чето такое.
даны прямоугольники АхБ, ВхГ.

сначала надо упорядочить стороны так, чтобы было А меньше Б, В меньше Г.

а дальше такая формула получилась:

А = Г * синус( Ж ) + В * косинус( И )
Б = Г * косинус( Ж ) + В * синус( И )
Ж + И = 90

вот если возможно подобрать такие Ж и И - то прямоугольник ВхГ входит в АхБ.

Собственно надо написать функцию кототрая вот это проверяет и вызвать ее так, чтобы она сначала попыталась засунуть АхБ в ВхГ, а потом наоборот.

Решение не проверял, и не на 100% в нем уверен.
 
С точки зрения математики я сделал, но ват как это написать на Си?
 
5. Ну а те, кто не хочет что-то делать самостоятельно должны понимать, что работа людей стоит денег.
 
Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
{float a,b,c,d,x,y;
x=2;
printf("Введите размеры 1 прямоугольника: а=");
scanf("%f", &a);
printf("в=");
scanf("%f", &b);
printf("Введите размеры 2 прямоугольника: c=");
scanf("%f", &c);
printf("d=");
scanf("%f", &d);
if ((a<c && b<d) || (a<d && b<c) || (b*sqrt(x)/2+a*sqrt(x)/2<=c))
printf("1 прямоугольник поместиться во 2");
else
if ((c<a && d<b) || (c<b && d<a) || (d*sqrt(x)/2+c*sqrt(x)/2<=a))
printf("2 прямоугольник поместиться во 1"); 
else
printf("Ничего не поместиться");
getch();			 
}
Но здесь работает только если вписывать под углом в квадрат, а для прямоугольника не знаю...
 
че-то ерунда какая-то. не понимаю как вы к такому пришли.
если вписываете в квадрат - то зачем 4 стороны вводите?
Код:
 (b*sqrt(x)/2+a*sqrt(x)/2<=c)
тут что за х. На этот момент х не присвоено значение, вы используете неинициализированную переменную, а значит утверждение:
Но здесь работает только если вписывать под углом в квадрат
не верно, т.к. это ваще не работает. В переменой Х на этот момент мусор, но и нормальный компилятор предупредит вас об ошибке.
 
всё нормально компилируется. А как ты предлагаешь?
 
а все, вижу Х=2 ))
 
Помогите кто нибудь с прогой
 
KOMPNET, тебе никто твои лабораторные и т.п. за тебя самого решать не будет!
Тот код что ты предоставил - содран. Более чем уверен, что ты даже не сможешь объяснить любую выбранную мной строчку этого кода.

Если тебе действительно это нужно, то можешь огласить цену. Возможно кто-то и возьмется.
 
СНАЧАЛО ОПРЕДЕЛИТЕ ЕСЛИ У ВАС ДАН КВАДРАТ (ПРОСТО РАДИУС ОПИСАНОЙ ОКРУЖНОСТИ ВНУТРЕННЕГО КВАДРАТА ДОЛЖЕН БЫТЬ СТРОГО МЕНЬШЕ РАДИУСА ВПИСАНОЙ ОКРУЖНОСТИ ВНЕШНЕГО КВАДРАТА)
ДЛЯ ПРЯМОУГОЛЬНИКА ТЕЖЕЛЕЕ. МОЖНО ПОПРОБЫВАТЬ ЧЕРЕЗ ТЕОРЕМУ ПИФАГОРА ... СДЕЛАЙТЕ СНАЧАЛО НА ЛИСТКЕ...
( НАРИСУЙТЕ 2 ПРЯМОУГОЛЬНИКА 1 ВПИСАНЫЙ ПОД УГЛОМ В ДРУГОЙ ИЗ ВЕРШИНУ СТРЕМЯЙЩЕЙСЯ К ВЕРХНЕЙ СТОРОНЕ ВНЕШНЕГО ПРЯМОУГОЛЬНИКА ПРОВЕДИТЕ ПЕРПЕНДИКУЛЯР К СТОРОНЕ ПРОВЕДЁННОЙ ИЗ ВЕРШИНЫ СТРЕМЯЩЕЙСЯ К НИЖНЕЙ СТОРОНЕ ВНЕШНЕГО ПРЯМОУГОЛЬНИКА ВОТ КАК НИЖЕ НА РИСУНКЕ ) ВЫВОД ====>>>>> ЕСЛИ ДЛИННА ПЕРПЕНДИКУЛЯРА " АБ " МЕНЬШЕ ЛЮБОЙ СТОРОНЫ ВНЕШНЕГО ПРЯМОУГОЛЬНИКА ТО ВПИСАТЬ МОЖНО ИНАЧЕ НЕЛЬЗЯ....
 

Вложения

  • Без_имени_1.png
    Без_имени_1.png
    1,3 КБ · Просмотры: 539
Ванёк, а тебе не кажется что ты опоздал, эдак.. на месяц со своим ответом?!))
 
Блин, так это ж обычная олимпиадная задачу, уже не раз решал её :))
Просто под рукой готового исходника нет, так бы выложил.
Тут просто перебором угла
a => c * sin(fi) + d * cos(fi);
b => c * cos(fi) + d * sin(fi);
Всё решается по этим формулам.
 
Всё решается по этим формулам.
примерно то же самое было предложено 6:10:2011, 17:26, только более правильно )
Ну я не так как Иван решал. У меня что-то типа индукции получалось.
[OFFTOP]Иван19994 отпусти shift[/OFFTOP]
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab