![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Starichok |
![]() ![]()
Сообщение
#1
|
|||
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Знакомой дали задание написать программу для решения следующей задачи:
Дано два круга с радиусами R1 и R2. Можно ли вписать в какой-нибудь из них равносторонний треугольник? Площадь равностороннего треугольника S=a^2*sqrt(3)/4; Площадь треугольника вписанного в окружность S=a^3/(4*R); Возможно ли следующее решение: Program First; P.S. Не судите строго - с Паскалем знаком второй день. ![]()
|
|||
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
To: Starichok
Цитата Дано два круга с радиусами R1 и R2. Можно ли вписать в какой-нибудь из них равносторонний треугольник? Это твоя задача? Тогда тебе не нужна программа... Ответ - Да, можно... В любую окружность можно вписать равносторонний треугольник... Уточни условие... |
klem4 |
![]()
Сообщение
#3
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Volvo, там ведь он еще вводит сторону треугольника, на сколько я понял, "значение а" - это именно она
![]() Starichok, ну если формулы правильные, то тогда все ок. Сообщение отредактировано: klem4 - 8.11.2005 21:26 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Тогда достаточно проверить, что радиус окружности равен a / sqrt(3) ... Только тогда (для равностороннего треугольника) это будет описанная окружность... А исходные данные надо указывать...
|
Starichok |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(volvo @ 8.11.2005 21:27) Тогда достаточно проверить, что радиус окружности равен a / sqrt(3) ... Спасибо. Я тоже об этом подумал. Цитата(volvo @ 8.11.2005 21:27) А исходные данные надо указывать... Дело в том, что программа должна работать на проверку при любых значениях длины стороны - a, и радиуса окружности - R... |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата(klem4 @ 8.11.2005 20:21) Starichok, ну если формулы правильные, то тогда все ок. Ага, сейчас прямо... ![]() Цитата(Starichok @ 8.11.2005 20:03) begin |
Starichok |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ты прав volvo, программа писалась под заданное условие: дано одно значение стороны треугольника - a и два значения радиуса - R1 R2. Но, как потом выяснилось, учительница хотела большего, чем просто проверки двух значений радиуса. Новый вариант выглядит прблизительн так:
|
Atos |
![]()
Сообщение
#8
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Проверь, а будет ли программа вообще выдавать "Возможно"? Проблемы могут быть вот здесь
Код If a=R * sqrt(3) из-за погрешности машинного представлеия вещественных чисел это равенство скорее всего в точности выполняться не будет. Эта проблема обычно решается так: проверку делаем Код If abs(a-R * sqrt(3)) <е , где е задаём как очень маленькое число, например, Код const е=0.00001; |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Atos,
![]() Starichok, а еще проблемы могут быть с выходом из программы. Как заканчивать работу с программой? Только ввести заведомо НЕчисловое значение, чтобы произошла RunTime Error. У тебя же по GoTo постоянный переход на ввод R... Но согласись, выход из программы через ошибку - это несерьезно... Надо бы Repeat ... Until что-ли поставить вместо этого... |
Starichok |
![]()
Сообщение
#10
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Atos
Спасибо за подсказку, я именно в это и уперся. Попробовал сделать по твоему совету, но, учитывая, что в условии задачи R это либо целое число, либо десятичная дробь с двумя знаками после запятой, для того чтобы получить ответ "Возможно" пришлось изменить значение e на следующее: Код const e=0.01; volvo Цитата а еще проблемы могут быть с выходом из программы... Ты абсолютно прав volvo. Цитата согласись, выход из программы через ошибку - это несерьезно... Полностью согласен. Цитата Надо бы Repeat ... Until что-ли поставить вместо этого... Благодарю за совет. Поставил. Вот, что получилось:
|
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
UNTIL R=0; ![]() Вот так лучше: UNTIL Abs( R ) < e; |
Starichok |
![]()
Сообщение
#12
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(volvo @ 9.11.2005 15:52) UNTIL R=0; ![]() Вот так лучше: UNTIL Abs( R ) < e; Спасибо. Изменю. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 7:06 |