![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
lizhen |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Женский Репутация: ![]() ![]() ![]() |
Программа для вычисления корней кубического уравнения:
reshalka kubicheskyh uravneniy; Заранее спасибо, за потраченное на мой вопрос время. Сообщение отредактировано: Lapp - 31.03.2012 3:34 |
![]() ![]() |
Krjuger |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Ну полный перебор это конешно мощно.А теперь подумаем, что же делает ваша программа....Во первых,если она и найдет ,то она найдет только целые корни,это связано с тем что у вас цикл по х,и х принимает только целочисленные значения, даже для квадратного уравнения это ооочень малый процент от всех возможных решений,но дело ваше.
Теперь почему ваша программа не работает. reshalka kubicheskyh uravneniy; писать нельзя, кампилятор не поймет,но можно program reshalka_kubicheskyh_uravneniy;Пробелы тут тоже оставлять нельзя,а вот подчеркивания нормально. Затем,вы делаете clrscr;, но ведь надо подключить библиотеку crt где собственно реализована эта функция. затем, у вас цикл 1000000,но простите,а вы подумали что вам в условии придется миллион умножить на миллион и еще раз на миллион, да еще и на коэффициент, это число ни в какой тип данных не влезет.... вот и получаеться,что ваше условие срабатывает всегда. В итоге что мы имеем.
Что же способна сделать эта программа, из всех корней она выведет нам только целые,причем если корни одинаковые ,например уравнения вида (x-a)^3,где х=а будут все три корня, то она вывелет лишь 1 корень.Подобрать числа когда будут все 3 целых корня я не смог. Мой вам совет,хотите сделать нормальную программу,возьмите один из методов и тут вам помогут его реализовать,если вы действительно хотите решить эту задачу. Сообщение отредактировано: Krjuger - 30.03.2012 22:44 |
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Крюгер, судя по строке
if k=0 then write('Chelyh korney net');- Лизхен интерсесуют ТОЛЬКО целые решения (что, вообще-то, желательно было бы пояснить в условии, а не паззлить всех и не заставлять высмативать намеки в коде), так что метод вполне себе ничего.. )) Далее, тип LongInt действительно переполнится (я только не понял, почему условие якобы выполнится всегда), но тип comp может стправиться с задачей (при не очень больших коэффициентах), так что я советую применять его.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
![]()
Сообщение
#4
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Затем,вы делаете clrscr;, но ведь надо подключить библиотеку crt
Лучше убрать вообще нафиг -------------------- |
Krjuger |
![]()
Сообщение
#5
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Lapp,Чесно....Я не знаю почему условия срабатывает,но когда я запустил ее исходную программу,убрав все некомпилирующиеся моменты,я увидел следующее.введя обычное уравнение (х-1)^3 я увидел в интервале от -1000000 до 1000000 порядка 977 решений.....
Про тип comp я пока что ничего не знал. Насчет очистки экрана,я лишь сделал так,чтобы оно работало, а уж использовать ли ее или нет,это не мое решение. |
IUnknown |
![]()
Сообщение
#6
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата (я только не понял, почему условие якобы выполнится всегда) Не всегда, но гораздо чаще, чем оно должно выполняться в действительности. Уже при -999423 оно выполняется в первый раз (усечение результата при переполнении творит чудеса. Опять же, почему топикстартер не включает хотя бы контроль целочисленного переполнения в настройках - непонятно, получить аварийный вылет в данном случае намного лучше, чем результат, который заведомо не может быть верным) |
lizhen |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 3 Пол: Женский Репутация: ![]() ![]() ![]() |
Большое спасибо. Да программа ищет только целые корни, но лишь потому что я действительно не знаю, как бытьь и писать иначе. В Паскале я ноль, но пытаюсь понять и разобраться.
|
Krjuger |
![]()
Сообщение
#8
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Дело не в паскале,для начала нужно найти методы для полноценного решения кубического уравнения,а потом попытаться их реализовать.Например
Формула Кардано Согласисть, ничего сложного нет, сначала вычисляешь 2 величины,через них находишь третью,дальше смотри условие, больше нюля,меньше или равно,ну или конкретно одно условие, например, тебе нужны только вещественные корни тогда Q=0, а остальные вообще не рассматриваешь. |
lizhen |
![]()
Сообщение
#9
|
Группа: Пользователи Сообщений: 3 Пол: Женский Репутация: ![]() ![]() ![]() |
Большое спасибо, пошла реализовывать.
Если что то не пойму или на чем то застряну обращусь. Спасибо. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 18:21 |