Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2010, 13:15   #1
vitaly38
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 37
Восклицание исправить программу вычисления полинома.

Народ, помогите пожалуйста исправить программу вычисления полинома.

Программа должна вычислять значения 2мя способами, с рекурсией и без нее.
вот мой код, программа рабочая.

Код:
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    BitBtn1: TBitBtn;
    Label5: TLabel;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
  a:array[0..99] of integer;
  n,x,i,z,q,ass:integer;
   result:integer;
implementation
 
{$R *.dfm}
 
 
   function polin(x,n,i:integer):integer;
begin
  Result:=a[i];
  if i < n then
    Result:=Result+x*polin(x,n,i+1);
end;
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 
 
randomize;
label3.Caption:='';
x:=strtoint(edit1.text);
n:=strtoint(edit2.text);
z:=1;
for i:=0 to n do begin
a[i]:=random(9)+1;
label3.caption:=label3.caption+'a['+inttostr(i)+']='+inttostr(a[i])+' ';
end;
label4.Caption:='Массив сформирован случайно:';
q:=a[n];
for i:=n-1 downto 0 do begin
z:=x*q;
q:=z+a[i];
end;
memo1.Lines.add(inttostr(q)+'obyc');
ass:=polin(x,n,0);
memo1.Lines.Add(inttostr(ass)+'rekyrsia');
end;
 
 
end.
Однако надо переделать программу так, чтобы функция

Код:
function polin(x,n,i:integer):integer;
begin
  Result:=a[i];
  if i < n then
    Result:=Result+x*polin(x,n,i+1);
end;
не использовала параметр i(он типо лишний), замест параметра i нужно использовать массив а.
и еще необходимо оформить вычисление обычным способом в виде функции..

заранее благодраю.
Изображения
Тип файла: jpg лаб.полином.JPG (13.2 Кб, 131 просмотров)
Вложения
Тип файла: rar проект.полином..rar (168.8 Кб, 9 просмотров)
vitaly38 вне форума Ответить с цитированием
Старый 20.03.2010, 14:34   #2
keef
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 61
По умолчанию

Заместо i использовать a, это как ? a, у тебя массив из 100 чисел, какое именно подставлять или делать цикл вот тут например Result:=Result+x*polin(x,n,i+1);
keef вне форума Ответить с цитированием
Старый 20.03.2010, 15:52   #3
vitaly38
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 37
По умолчанию

а - это массив который рандомно генерируется...
vitaly38 вне форума Ответить с цитированием
Старый 20.03.2010, 16:11   #4
keef
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 61
По умолчанию

Это понятно, но какой элемент массива должен быть использован, или они должны быть задействованы все.
keef вне форума Ответить с цитированием
Старый 20.03.2010, 17:19   #5
vitaly38
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 37
По умолчанию

если честно, не знаю..препод сказал что i это лишнее.. я говорю ну а что тоогда вместо i ... она говорит массив а. больше ничего не знаю...
vitaly38 вне форума Ответить с цитированием
Старый 20.03.2010, 18:40   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

надо чтобы была такая функция

function poilnom(a: array of integer; x:integer): integer;
..функция вычисления полинома заданного коэффициентами a
в точке x

а учитивая
Цитата:
вычислять значения 2мя способами
должно быть ДВЕ фунции (на каждый способ с одинаковым набором параметров)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.03.2010 в 18:43.
evg_m вне форума Ответить с цитированием
Старый 20.03.2010, 19:00   #7
vitaly38
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 37
По умолчанию

evg_m
напишите пожалуйста эти две функции..
vitaly38 вне форума Ответить с цитированием
Старый 20.03.2010, 20:47   #8
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Код:
const n=10;
type mas=array [0..n] of real;
......
function poilnom(a: mas; x:real): real;
var s:real;
begin
  s:=0.0;
  for i:=0 to n do
  begin
    s:=s+a[i]*exp(i*ln(x));  
  end;
  polinom:=s;
end
Serebro вне форума Ответить с цитированием
Старый 20.03.2010, 21:03   #9
vitaly38
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 37
По умолчанию

Serebro
а зачем експоненту брать? и натуральный логарифм?? туфта,простите за выражение.
vitaly38 вне форума Ответить с цитированием
Старый 20.03.2010, 22:05   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

одна из них уже написана. Это там, где вычисляется q которое и должно стать результатом функции (те весь код от q:=0 до получения окончательного значения вынести в отдельную функцию).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу вычисления суммы. Obender13 Помощь студентам 0 05.11.2009 18:14
Cоставить программу для вычисления зн-я Babur4iK Паскаль, Turbo Pascal, PascalABC.NET 1 27.10.2009 15:31
Составить программу вычисления суммы Ленка Помощь студентам 8 28.05.2009 13:29