Нахождение целых корней уравнения на заданном промежутке - PascalABC.NET
Формулировка задачи:
Помогите пожалуйста! Вводятся целые числа a, b, c, d, e, f, каждое из которых не превосходит по модулю 1000, и рассматривается уравнение
a*x5+b*x4+c*x3+d*x2+e*x+f=0.
Требуется написать программу, которая будет находить все его целые корни в промежутке от -10 до 10. Если уравнение не имеет целых корней в указанном промежутке, то вывести фразу «Нет таких корней».
Решение задачи: «Нахождение целых корней уравнения на заданном промежутке»
textual
Листинг программы
uses System.Linq; // for Enumerable begin var c := Enumerable.Range(1, 6).Select((i : integer) -> ReadInteger({тут можно добавить приглашение})).ToList(); c.Reverse(); var roots := Enumerable.Range(-10, 21).Where(x -> c.Aggregate((acc, coeff) -> acc * x + coeff) = 0); if roots.ToArray().Length > 0 then writeln(string.Join(NewLine, roots.Select((v, i) -> Format('x{0} = {1}', i, v)))) else writeln('Нет таких корней'); end.
Объяснение кода листинга программы
- Объявляется переменная
c
типаEnumerable.Range(1, 6)
и инициализируется с помощью методаSelect
и лямбда-выражения, которое читает целое число с помощью функцииReadInteger
. - Затем переменная
c
инвертируется с помощью методаReverse
. - Далее объявляется переменная
roots
типаEnumerable.Range(-10, 21)
и инициализируется с помощью методаWhere
. Лямбда-выражение проверяет, равно ли значениеAggregate
нулю, применяя его к каждому элементуc
. - Если длина массива
ToArray
корней больше нуля, то выводится список корней с помощью методаSelect
и лямбда-выражения, которое выводит индекс и значение корня. - Если длина массива корней равна нулю, то выводится сообщение
Нет таких корней
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д