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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2011, 14:29   #1
Luxe0n
 
Регистрация: 10.03.2011
Сообщений: 6
По умолчанию C непонимаю почему такой output.

Домашка:
Вохможно ли нарисовать 2 круга в даний квадрат.
Input: L W R1 R2
где L и W размеры квадрата R1 R2 радиус кругов.
например если квадрат размерами 5x5 а круг R1=1 и R2=2 тогда Input 5 5 1 2 Output N или S
Дано пару тестов:
5 5 1 2 должно писать нехорошо тоисть "N"
9 8 3 2 должно писать Хорошо тоисть "S"
Вопрос :
Почему на
72 93 30 28 мне пишит что Нехорошо "N" а по даним тестам должно видать "S".
Может сам тест не правильний? или я что то недописал?

Дание Input:
Код:
11 9 2 3
7 8 3 2
10 15 3 7
8 9 3 2
5 5 1 2
72 93 30 28
0 0 0 0
Output
Код:
S
N
N
S
N
S
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int W, L, R1, R2;
    float Lx, Wx, sqrt2= sqrt(2);
    scanf("%d%d%d%d", &W, &L, &R1, &R2);
    while(W){
        Lx= L - (R1 + sqrt2/R1);
        Wx= W - (R1 + sqrt2/R1);
        if (2*R2<Lx && 2*R2<Wx)
            printf("S\n");
        else
            printf("N\n");
        scanf("%d%d%d%d", &W, &L, &R1, &R2);
    }
    return EXIT_SUCCESS;
}

Последний раз редактировалось Luxe0n; 10.03.2011 в 15:40.
Luxe0n вне форума Ответить с цитированием
Старый 10.03.2011, 14:51   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Я есть писать текст русский но понимать я не что пишу.

Сформулируйте задание в понятном русском языке.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 10.03.2011, 15:24   #3
Luxe0n
 
Регистрация: 10.03.2011
Сообщений: 6
По умолчанию

Переписал. думаю так уже понятней
Luxe0n вне форума Ответить с цитированием
Старый 10.03.2011, 15:47   #4
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

А что изменилось помимо появления переносов строк? 0_о

Код:
Lx= L - (R1 + sqrt2/R1);
Зачем тут квадратный корень извлекается?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 10.03.2011, 15:57   #5
Luxe0n
 
Регистрация: 10.03.2011
Сообщений: 6
По умолчанию

если подумаеш 2 круга поместить в квадрат не так уж и легко....
я ету проблему решил так что 1 круг ставлю в край квадрата,а второй по диагональе.
И для етого я использую теорему Пифагора.

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
А что изменилось помимо появления переносов строк? 0_о

Код:
Lx= L - (R1 + sqrt2/R1);
Зачем тут квадратный корень извлекается?

Последний раз редактировалось Luxe0n; 10.03.2011 в 16:01.
Luxe0n вне форума Ответить с цитированием
Старый 10.03.2011, 16:03   #6
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

А, затупил. Подумал что корень из радиуса.

В задаче, если что, ни капли не квадрат, и это не учтено никак. Еще бы он выдавал правильный результат.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 10.03.2011, 16:24   #7
Luxe0n
 
Регистрация: 10.03.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
А, затупил. Подумал что корень из радиуса.

В задаче, если что, ни капли не квадрат, и это не учтено никак. Еще бы он выдавал правильный результат.
Да ето не квадрат,ето прямоугольник ну ето не меняет решению проблемы...
Мнебы хорошую формулу, или идею как реализовать
Luxe0n вне форума Ответить с цитированием
Старый 10.03.2011, 18:30   #8
TriV
 
Регистрация: 07.02.2010
Сообщений: 8
По умолчанию

Если задача сформулирована именно как квадрат тогда неверны тесты. Если же же в задаче допустим прямоугольник то Ваше решение валится на тесте
"2 10 1 1". Там круги располагаются один рядом с другим.
Вашего решения я признаюсь никак не могу понять. Что такое (R1 + sqrt2/R1) с геометрической точки зрения?
Что касается идеи то: для квадрата линия центров будет совпадать с диагональю. То есть (R1+R2+R1*sqrt2+R2*sqrt2) <= (W*W + L*L). (Это сумма радиусов плюс расстояния от центра круга до ближайшего угла если круг "вжат" в этот угол.
Для прямоугольника все становится сложнее. Я не приведу сейчас точное доказательство но размещение 2х кругов в прямоугольник будет наиболее оптимальным если их центры будут лежать на биссектрисах противоположных углов. То есть нужно:
1)вычислить уравнения биссектрисах.
2)посчитать можно ли поставить две точки на биссектрисах так что бы расстояние между ними было не меньше суммы радиусов а соответственно расстояния от каждой из точек до краев прямоугольника тоже было не меньше радиуса.

Последний раз редактировалось TriV; 10.03.2011 в 20:00. Причина: Не учел что считываютс радиус а не диаметры. Сорри.
TriV вне форума Ответить с цитированием
Старый 10.03.2011, 19:47   #9
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Luxe0n Посмотреть сообщение
Дание Input:
Код:
...
72 93 30 28
...
Для этого теста ответ - N.
Vago вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не всегда output перезаписывает? Nikita++ Помощь студентам 0 22.10.2010 12:09
Почему такой код возможен и сколько выделится памяти? Gtx541 Общие вопросы C/C++ 5 16.06.2010 19:38
почему такой результат? True_girl Помощь студентам 3 17.04.2010 21:14
Почему выдаёт такой результат??? bloodeagle Помощь студентам 1 12.11.2009 08:21
Непонимаю условие задачи.... Карась Помощь студентам 2 28.11.2007 17:41