Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизПомоги gj;fkeqcnf Freeker Найти похожие ветки
← →
VanDet © (2006-02-20 10:43) [0]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin, ExtCtrls, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
SpinEdit1: TSpinEdit;
StringGrid1: TStringGrid;
Panel1: TPanel;
Panel2: TPanel;
Panel5: TPanel;
Panel4: TPanel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Label4: TLabel;
Edit1: TEdit;
Label5: TLabel;
Edit2: TEdit;
procedure FormShow(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
{Объявление типа члена и указателя на него}
PX = ^TX;
TX = record
K: Real; {коэффициент преред X}
9
P: Integer; {Степень X}
next: PX; {Указатель на следующий член}
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormShow(Sender: TObject);
begin
Application.MessageBox ("Выполнил студент ОмГТУ,факультета АСОИиУ группы АС-115,Тихонов И.Ю.,Проверил Цыганенко В. Н.,Задача 4");
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
Var
I: Integer;
begin
With StringGrid1 do
Begin
ColCount := SpinEdit1.Value + 2;
For I:=0 to SpinEdit1.Value do
Begin
Cells[ColCount-I-1, 0]:=IntToStr(I); {Присвоение I ,в строковом виде к Cells[ColCount-I-1, 0]}
If Cells[ColCount-I-1, 1] = ""
Then
Cells[ColCount-I-1, 1] := "0";
End;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1Change (Sender);
With StringGrid1 do
10
Begin
ColWidths[0]:=50;
Cells[0,0]:="Степень";
Cells[0,1]:="Коэфф.";
End;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
P, {многочлен P(x)}
Q {Многочлен (sx+t)P(x)+P"(x)}
: PX;
I: Integer;
K: Real;
S, T: Real;
{Добавляем к многочлену член степени P с коэффициентом K}
procedure Add (var Q: PX; K: Real; P: Integer);
var
W, R: PX;
begin
{If K = 0 Then Exit;}
if Q <> nil then
begin
W:=Q;
{Ищем член со степенью P}
While (W.next <> nil) and (W.next.P >= P) do
W:=W.next;
{если найден член степени P}
If W.P = P Then
Begin
{Увеличиваем значение коэффициента}
W.K:=W.K + K;
end else
Begin
R:=W.next;
New(W.next);
W:=W.next;
11
W.K:=K;
W.P:=P;
W.next:=R;
End;
end else
begin
{Создаём первый элемент многочлена}
New(Q);
Q.K:=K;
Q.P:=P;
Q.next:=nil;
end;
end;
{построение записи многочлена}
function PRecord (Q: PX): String;
Var
K: Real;
P: Integer;
S: String;
Begin
S:="";
While Q <> nil do
begin
K:=Q.K;
P:=Q.P;
f K <> 0 Then
Begin
If K < 0 Then
S:=S + " - " else
If (K > 0) and (S <> "") Then
S:=S + " + ";
If (Abs(K) <> 1) or (P = 0) Then
S:=S + FloatToStr (Abs(K)); {Преобразование из вещественных чисел в строковые}
If P > 0 Then
Begin
12
S:=S + "x";
If P > 1 Then
S:=S + "^" + IntToStr(P);
End;
end;
Q:=Q.next;
end;
If S = "" Then
S:="0";
PRecord:=S;
end;
begin
P:=nil;
Q:=nil;
Add (P, 0, SpinEdit1.Value+1);
Add (P, 0, SpinEdit1.Value+1);
S:=StrToFloat (Edit1.Text);
T:=StrToFloat (Edit2.Text);
{Получаем многочлены P и Q}
With StringGrid1 do
Begin
For I: =0 to ColCount-2 do
Begin
K:=StrToFloat(Cells[ColCount-I-1, 1]);
Add (P, K, I);
Add (Q, S*K, I+1);
Add (Q, T*K, I);
Add (Q, I*K, I-1);
End;
End;
Label2.Caption:=PRecord(P);
Label3.Caption:=PRecord(Q);
end;
end.
← →
Amoeba © (2006-02-20 16:13) [1]Ну, и в чем, собственно, проблема?
← →
clickmaker © (2006-02-20 17:11) [2]gj;fkeqcnf Freeker наверно в отпуске...
← →
Гаврила © (2006-02-20 17:19) [3]"gj;fkeqcnf" переводится как "пожалуйста"
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c