IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Решалка кубических уравнений, Задача-то детская, но я не понимаю что не так. Помогите, вразумите.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


Программа для вычисления корней кубического уравнения:
reshalka kubicheskyh uravneniy;
var n,y,z,f:integer;
x,k:longint;
begin
clrscr;
writeln('Vvedite koeffichyenty uravneniya chiala:n,y,z,f');
readln(n,y,z,f);
k:=0;
for x:=-1000000 to 1000000 do
if n*x*x*x+y*x*x+z*x+f=0 then
begin
k:=k+1;
writeln('x',k,'=',x);
end;
if k=0 then write('Chelyh korney net');
readln;
end.

Заранее спасибо, за потраченное на мой вопрос время.

Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Ну полный перебор это конешно мощно.А теперь подумаем, что же делает ваша программа....Во первых,если она и найдет ,то она найдет только целые корни,это связано с тем что у вас цикл по х,и х принимает только целочисленные значения, даже для квадратного уравнения это ооочень малый процент от всех возможных решений,но дело ваше.
Теперь почему ваша программа не работает.
reshalka kubicheskyh uravneniy;

писать нельзя, кампилятор не поймет,но можно
program reshalka_kubicheskyh_uravneniy;
Пробелы тут тоже оставлять нельзя,а вот подчеркивания нормально.
Затем,вы делаете clrscr;, но ведь надо подключить библиотеку crt где собственно реализована эта функция. затем, у вас цикл 1000000,но простите,а вы подумали что вам в условии придется миллион умножить на миллион и еще раз на миллион, да еще и на коэффициент, это число ни в какой тип данных не влезет.... вот и получаеться,что ваше условие срабатывает всегда.
В итоге что мы имеем.

program reshalka_kubicheskyh_uravneniy;
uses crt;
var n,y,z,f:integer;
x,k:longint;
begin
clrscr;
writeln('Vvedite koeffichyenty uravneniya chiala:n,y,z,f');
readln(n,y,z,f);
k:=0;
for x:=-100 to 100 do
begin
if n*x*x*x+y*x*x+z*x+f=0 then
begin
k:=k+1;
writeln('x',k,'=',x);
end;
end;
if k=0 then write('Chelyh korney net');
readln;
end.


Что же способна сделать эта программа, из всех корней она выведет нам только целые,причем если корни одинаковые ,например уравнения вида (x-a)^3,где х=а будут все три корня, то она вывелет лишь 1 корень.Подобрать числа когда будут все 3 целых корня я не смог.
Мой вам совет,хотите сделать нормальную программу,возьмите один из методов и тут вам помогут его реализовать,если вы действительно хотите решить эту задачу.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Крюгер, судя по строке
if k=0 then write('Chelyh korney net');
- Лизхен интерсесуют ТОЛЬКО целые решения (что, вообще-то, желательно было бы пояснить в условии, а не паззлить всех и не заставлять высмативать намеки в коде), так что метод вполне себе ничего.. ))
Далее, тип LongInt действительно переполнится (я только не понял, почему условие якобы выполнится всегда), но тип comp может стправиться с задачей (при не очень больших коэффициентах), так что я советую применять его..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Затем,вы делаете clrscr;, но ведь надо подключить библиотеку crt

Лучше убрать вообще нафиг


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Lapp,Чесно....Я не знаю почему условия срабатывает,но когда я запустил ее исходную программу,убрав все некомпилирующиеся моменты,я увидел следующее.введя обычное уравнение (х-1)^3 я увидел в интервале от -1000000 до 1000000 порядка 977 решений.....
Про тип comp я пока что ничего не знал.
Насчет очистки экрана,я лишь сделал так,чтобы оно работало, а уж использовать ли ее или нет,это не мое решение.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
(я только не понял, почему условие якобы выполнится всегда)
Не всегда, но гораздо чаще, чем оно должно выполняться в действительности. Уже при -999423 оно выполняется в первый раз (усечение результата при переполнении творит чудеса. Опять же, почему топикстартер не включает хотя бы контроль целочисленного переполнения в настройках - непонятно, получить аварийный вылет в данном случае намного лучше, чем результат, который заведомо не может быть верным)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


Большое спасибо. Да программа ищет только целые корни, но лишь потому что я действительно не знаю, как бытьь и писать иначе. В Паскале я ноль, но пытаюсь понять и разобраться.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Дело не в паскале,для начала нужно найти методы для полноценного решения кубического уравнения,а потом попытаться их реализовать.Например
Формула Кардано
Согласисть, ничего сложного нет, сначала вычисляешь 2 величины,через них находишь третью,дальше смотри условие, больше нюля,меньше или равно,ну или конкретно одно условие, например, тебе нужны только вещественные корни тогда Q=0, а остальные вообще не рассматриваешь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


Большое спасибо, пошла реализовывать.
Если что то не пойму или на чем то застряну обращусь.
Спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 12.09.2025 4:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name