Помощь - Поиск - Пользователи - Календарь
Полная версия: Упростить программу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Domin9es
Помогите упростить программу. Я сам не вижу как это можно сделать. Учитель не принимает

Даны действительные числа а0,..,а5, d0,..,d5. Получить многочлен шестой степени
d0+d1(x-a0)+d2(x-a0)(x-a1)+…+d5(x-a0)(x-a1)…(x-a5).


const
a : array [1..6] of real = (2.0, 3.2, 1.2, -12.0, 1.5, 6.2);
d : array [1..6] of real = (-1.0, 2.2, 4.1, 10.1, 1/5, 2.1);
var
x,y : real;
begin
WriteLn('Введите значение x:');
ReadLn(x);
y:=d[1] + (x - a[1])*(d[2] + (x - a[2])*(d[3] +
(x - a[3])*(d[4] + (x - a[4])*(d[5] +
(x - a[5])*(d[6] + (x - a[6]))))));

WriteLn(y);
end.



два раза создалась
volvo
Цитата
Я сам не вижу как это можно сделать.
Запихать вычисление в цикл:
  y := 1;
for i := 6 downto 1 do
y := d[i] + (x - a[i])*y;
Domin9es
Спасибо! А я думал через замену что-ли. I'm a stupid

А как это будет выглядеть на С++?



y := 1;
for i := 6 downto 1 do
y := d[i] + (x - a[i])*y;

мисс_граффити
y=1;
for (int i=6;i>0;i--)
y=d[i]+(x-a[i])*y;

только скорее всего границы изменения i будут не 6..1, а 5..0 (я имею в виду, если переводить программу целиком, а не только этот фрагмент)
Domin9es
Ответы не сходятся? unsure.gif
мисс_граффити
какие ответы?
ты о чем?
Domin9es
Эта же программа на с++ выдает другие ответы. Но они должны соввпадать. До сокращения все ответы совпадали.
volvo
Приводи свои Сишные исходники до и после упрощения, посмотрим что ты наупрощал. Лучше - в раздел Другие языки

Добавлено через 1 мин.
P.S. Опять 1.0/5.0 забыл?
Domin9es
Упрощение программы
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.