Нахождение целых корней уравнения на заданном промежутке - 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и лямбда-выражения, которое выводит индекс и значение корня. - Если длина массива корней равна нулю, то выводится сообщение
Нет таких корней.