Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с делфи пожалуйста.

кен Ученик (90), на голосовании 3 дня назад
Почему код просто выводит число, а не уравнение? должны умножать скобки друг на друга, а потом складываться. Надо,чтобы уравнение выводилось в виде уравнения x^5 - x^4 -x^3 ... примерно так.То есть скобки умножается друг на друга,и получается степень x

procedure TForm1.btn1Click(Sender: TObject);
var
mas: array[0..5] of Double;
m, sum, p, x: Double;
k, i: Integer;
begin
mas[0] := 0.91;
mas[1] := 0.1;
mas[2] := 0.123;
mas[3] := 0.21;
mas[4] := 0.26;
mas[5] := 0.3;

m := 1;
sum := 0;

// Предполагаем, что x - это значение, которое вы хотите использовать
x := 0; // Замените 0 на нужное вам значение

for k := 0 to 5 do
begin
p := m; // Сохраняем текущее значение m
for i := 0 to 5 do
begin
if k = i then
begin
// Если k = i, то p остается равным m, так как (x - mas[i]) будет равно 1
p := m * 1; // Можно просто оставить p как m
end
else
begin
p := p * (x - mas[i]); // Умножаем p на (x - mas[i])
end;
end;
sum := sum + p; // Добавляем p к сумме
end;

edt1.Text := FloatToStr(sum);
end;
end.
Голосование за лучший ответ
Терр Онтал Мудрец (14153) 1 месяц назад
Как ты код написал, так он и выводит, откуда ему знать, как ты там хочешь выводить. Для того чтобы вывести по-твоему нужно либо накодить символьные вычисления, или, что лучше, использовать уже готовую библиотеку для этого
Андрей Высший разум (480407) 1 месяц назад
Код выводит ровно то, что в нём прописано. А прописано:
 edt1.Text := FloatToStr(sum); 
Вывод единственного значения вещественной переменной sum перед завершением работы процедуры.

И это ВСЁ!!! Никакого другого вывода в твоём коде нет.
кенУченик (90) 1 месяц назад
а как сделать,чтобы выводил то что мне нужно?
Андрей Высший разум (480407) кен, Была бы схема Горнера - было бы легко и просто. Но у тебя в коде что-то странное, отдалённо напоминающее полином Лагранжа.
S.H.I. Оракул (73207) 1 месяц назад
 procedure TForm1.btn1Click(Sender: TObject); 
var
mas: array[0..5] of Double;
coef: array[0..5] of Double; // Массив для коэффициентов полинома
i, j, n: Integer;
s: string;
begin
mas[0] := 0.91;
mas[1] := 0.1;
mas[2] := 0.123;
mas[3] := 0.21;
mas[4] := 0.26;
mas[5] := 0.3;

n := 5; // Степень полинома

// Инициализируем коэффициенты
for i := 0 to n do
coef[i] := 0;

// Используем метод умножения полиномов
// Начнем с полинома (x - mas[0])
coef[1] := 1; // x^1
coef[0] := -mas[0]; // x^0

// Умножаем на остальные множители (x - mas[i])
for i := 1 to n do
begin
// Умножение на (x - mas[i])
// Сдвигаем все члены на одну степень выше
for j := n downto 1 do
coef[j] := coef[j-1] - mas[i] * coef[j];
coef[0] := -mas[i] * coef[0];
end;

// Формируем строку полинома
s := '';
for i := n downto 0 do
begin
if coef[i] <> 0 then
begin
if (coef[i] > 0) and (s <> '') then
s := s + ' + ';
if coef[i] < 0 then
s := s + ' - ';

if abs(coef[i]) <> 1 or (i = 0) then
s := s + FloatToStr(abs(coef[i]));

if i > 0 then
begin
s := s + 'x';
if i > 1 then
s := s + '^' + IntToStr(i);
end;
end;
end;

edt1.Text := s;
end;
ХРАЗ (хранитель знаний) Профи (595) 1 месяц назад
procedure TForm1.btn1Click(Sender: TObject);
var
mas: array[0..5] of Double;
m, sum, p, x: Double;
k, i: Integer;
Equation, Term: string;
begin
mas[0] := 0.91;
mas[1] := 0.1;
mas[2] := 0.123;
mas[3] := 0.21;
mas[4] := 0.26;
mas[5] := 0.3;

m := 1;
sum := 0;

Equation := ''; // Начинаем формировать уравнение

for k := 0 to 5 do
begin
p := m;
Term := '';

for i := 0 to 5 do
begin
if k <> i then
begin
if Term = '' then
Term := '(x - ' + FloatToStr(mas[i]) + ')'
else
Term := Term + ' * (x - ' + FloatToStr(mas[i]) + ')';
p := p * (0 - mas[i]); // Умножаем только числа, x не подставляем
end;
end;

if Equation = '' then
Equation := Term
else
Equation := Equation + ' + ' + Term;

sum := sum + p;
end;

edt1.Text := Equation; // Выводим уравнение
end;
кенУченик (90) 1 месяц назад
зачем мне из чата жпт
Похожие вопросы