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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2009, 18:49   #1
Армана
Пользователь
 
Аватар для Армана
 
Регистрация: 22.11.2008
Сообщений: 24
По умолчанию Delphi. Не могу найти ошибку.

Нужно вычислить значение полинома с рекурсией и без. Стыдно конечно, что в такую программу закралась ошибка, но не получается ее найти
Вот код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit2, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Edit2: TEdit;
    StringGrid1: TStringGrid;
    Button2: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  n:integer;
  polinom:Tpolinom;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
n:=strtoint(Edit2.Text);
StringGrid1.ColCount:=n+1;
end;


procedure TForm1.Button2Click(Sender: TObject);
var x,y,z:extended;
    a:Pmas;
    i:integer;
begin

n:=strtoint(Edit2.Text);
x:=strtofloat(Edit1.Text);

GetMem(a,n*sizeof(integer));

for i:=0 to n do

begin
a[i]:=strtoint(StringGrid1.Cells[i,0]);
end;

polinom:=Tpolinom.create;
z:=tpolinom.srec(n,x,a);
y:=tpolinom.snotrec(x,n,a);
Memo1.Lines.Add('P=' + floattostr(y));
Memo2.Lines.Add('P='+floattostr(z));
polinom.free;  
FreeMem(a,n*sizeof(integer));

end;

end.
Код:
unit Unit2;

interface
  uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, math, StdCtrls, Grids;
type      Tmas=array [0..10] of integer;
          Pmas=^Tmas;
 Tpolinom=class(TObject)
class function srec( n:integer; x:extended;  a:Pmas):extended; virtual;
class function snotrec(x:extended; n:integer;  a:Pmas):extended; virtual;
  end;
implementation
class function Tpolinom.srec;
begin
if n = 0 then  result:=a[0]
else result:=srec(n-1,x,a)+power(x,n)*a[n] ;

end;


class function Tpolinom.snotrec;
var k:integer;
    p:extended;
begin
p:=a[n];
for k:=n-1 downto 0 do
p:=a[k]+ x*p;
result:=p;
end;

end.

From Stilet: Уважаемая Армана, просьба постить код с соответствующим тегом ( кнопка которого - #)
И еще: В следующий раз просьба прикреплять проект в архиве если код выкладываемый требует длительного копипасте в силу своих технических нагрузок

Последний раз редактировалось Stilet; 23.02.2009 в 09:35.
Армана вне форума Ответить с цитированием
Старый 23.02.2009, 09:27   #2
Армана
Пользователь
 
Аватар для Армана
 
Регистрация: 22.11.2008
Сообщений: 24
По умолчанию

Если не трудно, найдите пожалуйста ошибку. Мне завтра столько лаб нужно сдать, что я уже в собственном коду не разбираюсь
Армана вне форума Ответить с цитированием
Старый 23.02.2009, 09:39   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я что-то не понял а СтрингГрид самому заполнять?
Приложи ВЕСЬ проект с исходными данными дабы не набирать то чего не знаеш.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.02.2009, 17:20   #4
Армана
Пользователь
 
Аватар для Армана
 
Регистрация: 22.11.2008
Сообщений: 24
По умолчанию

StringGrid заполнять самому. Я обычно ввожу 1,2,3... и так далее в зависимости от размерности массива. Программа работает, но только когда размерность 2 или 5. В остальных случаях выдает ошибку. X тоже любое. Я брала 2. Не могу понять в чем дело. Если делать одним способом и без рекурсии, то работает правильно. Только мне нужно двумя.
Вложения
Тип файла: rar Архив WinRAR.rar (205.4 Кб, 9 просмотров)
Армана вне форума Ответить с цитированием
Старый 23.02.2009, 23:34   #5
Армана
Пользователь
 
Аватар для Армана
 
Регистрация: 22.11.2008
Сообщений: 24
По умолчанию

Ну вот и сама исправила ошибку. Переписала заново и все работает
Извините за беспокойство.
Армана вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите. Не могу найти ошибку Ximer Паскаль, Turbo Pascal, PascalABC.NET 3 15.02.2009 23:32
Не могу найти ошибку(С++) Yura_n Помощь студентам 8 20.01.2009 12:36
Не могу найти ошибку. Picaso18 Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 17:05
Не могу найти ошибку . KVANTOM Общие вопросы Delphi 2 08.01.2009 17:15
Не могу найти ошибку! Эдуард Общие вопросы C/C++ 7 27.02.2008 16:34