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

Тема в разделе "C/C++/C#", создана пользователем KOMPNET, 6 окт 2011.

  1. KOMPNET

    KOMPNET Гость

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

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    интересная математическая задача. Я подумаю )
     
  3. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    щас набросал чето такое.
    даны прямоугольники АхБ, ВхГ.

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

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

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

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

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

    Решение не проверял, и не на 100% в нем уверен.
     
  4. KOMPNET

    KOMPNET Гость

    С точки зрения математики я сделал, но ват как это написать на Си?
     
  5. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Так ты покажи что ты сделал. Это повысит свою карму.
     
  7. KOMPNET

    KOMPNET Гость

    Код (Text):
    #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();             
    }
    Но здесь работает только если вписывать под углом в квадрат, а для прямоугольника не знаю...
     
  8. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    че-то ерунда какая-то. не понимаю как вы к такому пришли.
    если вписываете в квадрат - то зачем 4 стороны вводите?
    Код (Text):
     (b*sqrt(x)/2+a*sqrt(x)/2<=c)
    тут что за х. На этот момент х не присвоено значение, вы используете неинициализированную переменную, а значит утверждение:
    не верно, т.к. это ваще не работает. В переменой Х на этот момент мусор, но и нормальный компилятор предупредит вас об ошибке.
     
  9. KOMPNET

    KOMPNET Гость

    всё нормально компилируется. А как ты предлагаешь?
     
  10. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    а все, вижу Х=2 ))
     
  11. KOMPNET

    KOMPNET Гость

    Помогите кто нибудь с прогой
     
  12. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    KOMPNET, тебе никто твои лабораторные и т.п. за тебя самого решать не будет!
    Тот код что ты предоставил - содран. Более чем уверен, что ты даже не сможешь объяснить любую выбранную мной строчку этого кода.

    Если тебе действительно это нужно, то можешь огласить цену. Возможно кто-то и возьмется.
     
  13. ivan1994

    ivan1994 Member

    Регистрация:
    31 окт 2011
    Сообщения:
    15
    Симпатии:
    0
    СНАЧАЛО ОПРЕДЕЛИТЕ ЕСЛИ У ВАС ДАН КВАДРАТ (ПРОСТО РАДИУС ОПИСАНОЙ ОКРУЖНОСТИ ВНУТРЕННЕГО КВАДРАТА ДОЛЖЕН БЫТЬ СТРОГО МЕНЬШЕ РАДИУСА ВПИСАНОЙ ОКРУЖНОСТИ ВНЕШНЕГО КВАДРАТА)
    ДЛЯ ПРЯМОУГОЛЬНИКА ТЕЖЕЛЕЕ. МОЖНО ПОПРОБЫВАТЬ ЧЕРЕЗ ТЕОРЕМУ ПИФАГОРА ... СДЕЛАЙТЕ СНАЧАЛО НА ЛИСТКЕ...
    ( НАРИСУЙТЕ 2 ПРЯМОУГОЛЬНИКА 1 ВПИСАНЫЙ ПОД УГЛОМ В ДРУГОЙ ИЗ ВЕРШИНУ СТРЕМЯЙЩЕЙСЯ К ВЕРХНЕЙ СТОРОНЕ ВНЕШНЕГО ПРЯМОУГОЛЬНИКА ПРОВЕДИТЕ ПЕРПЕНДИКУЛЯР К СТОРОНЕ ПРОВЕДЁННОЙ ИЗ ВЕРШИНЫ СТРЕМЯЩЕЙСЯ К НИЖНЕЙ СТОРОНЕ ВНЕШНЕГО ПРЯМОУГОЛЬНИКА ВОТ КАК НИЖЕ НА РИСУНКЕ ) ВЫВОД ====>>>>> ЕСЛИ ДЛИННА ПЕРПЕНДИКУЛЯРА " АБ " МЕНЬШЕ ЛЮБОЙ СТОРОНЫ ВНЕШНЕГО ПРЯМОУГОЛЬНИКА ТО ВПИСАТЬ МОЖНО ИНАЧЕ НЕЛЬЗЯ....
     

    Вложения:

  14. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Ванёк, а тебе не кажется что ты опоздал, эдак.. на месяц со своим ответом?!))
     
  15. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Блин, так это ж обычная олимпиадная задачу, уже не раз решал её :))
    Просто под рукой готового исходника нет, так бы выложил.
    Тут просто перебором угла
    Всё решается по этим формулам.
     
  16. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    примерно то же самое было предложено 6:10:2011, 17:26, только более правильно )
    Ну я не так как Иван решал. У меня что-то типа индукции получалось.
    [OFFTOP]Иван19994 отпусти shift[/OFFTOP]
     
Загрузка...
Похожие Темы - Задача На Прямоугольники
  1. elzim
    Ответов:
    0
    Просмотров:
    929
  2. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.117
  3. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.105
  4. MonteCristo
    Ответов:
    1
    Просмотров:
    851
  5. bort
    Ответов:
    1
    Просмотров:
    1.179

Поделиться этой страницей