Загрузить архив: | |
Файл: ref-29975.zip (261kb [zip], Скачиваний: 82) скачать |
Министерство общего и профессионального образования
Череповецкий государственный университет
Кафедра программного обеспечения ЭВМ.
ДисциплинаПрограммирование на ЯВУ
Тема:Программирование на языке ObjectPascal в средеDelphi .
Группы:
Принял преподаватель:
г Череповец . 2002/2003
Министерство общего и профессионального образования
Институт математики, физики и информатики
Задание:
Дан многочлен P(x)= anXn+ … + a 1X+ a 0X0с целыми коэффициентами можно представить в виде списка . Создать программу, которая проверяет на равенство многочлены P и Q ,а так же строит сумму этих многочленов.
Название курсовой работы:
План:
Блок схема3
Результаты работы10
Описание программы11
Литература11
Текст программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, Grids, StdCtrls;
type
M = array[0..65535] of word;
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
StringGrid2: TStringGrid;
Label1: TLabel;
Label2: TLabel;
ComboBox1: TComboBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button2: TButton;
Button3: TButton;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button4: TButton;
Button5: TButton;
RichEdit1: TRichEdit;
RichEdit2: TRichEdit;
RichEdit3: TRichEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
KofP,KofQ,KofS :M;
ListItem: TListItem;
L :TList;
s,ss : string;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var i :word;
begin
ComboBox1.ItemIndex := 0;
StringGrid1.Cells[0,0] :='Степень';
StringGrid1.Cells[1,0] :='Коофициент';
StringGrid2.Cells[0,0] :='Степень';
StringGrid2.Cells[1,0] :='Коофициент';
s:= '';
ss := '';
for i := 0 to 65535 do
begin
KofP[i] := 0;
KofQ[i] := 0;
KofS[i] := 0;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var e1,e2:integer;
C1,test,TCount,ENCount : word;
s1,s2 : string;
begin
s1 := Edit2.Text;
s2 := Edit1.Text;
If ComboBox1.ItemIndex = 0 then
begin
Val(s2, C1, e1);
Val(s1, Test, e2);
If (e1=0) and (e2=0)and(C1=StrToInt(s2))and(Test=StrToInt(s1)) then
begin
For TCount := 0 to StringGrid1.RowCount - 1 do
begin
If StringGrid1.Cells[0,TCount]=s2 then
begin
ENCount := TCount;
StringGrid1.Cells[1,TCount] :=S1;
KofP[StrToInt(s2)] := StrToInt(s1);
end;
end;
If ENCount = 0 then
begin
KofP[StrToInt(s2)] := StrToInt(s1);
StringGrid1.Cols[0].Append(Edit1.Text);
StringGrid1.Cols[1].Append(Edit2.Text);
StringGrid1.RowCount := StringGrid1.RowCount+ 1;
end;
end
else
begin
MessageDlg('Ошибка ввода данных ! ',mtWarning,[mbOk],0);
exit;
end
end
else
begin
Val(s2, C1, e1);
Val(s1, Test, e2);
If (e1=0) and (e2=0)and(C1=StrToInt(s2))and(Test=StrToInt(s1)) then
begin
For TCount := 0 to StringGrid2.RowCount - 1 do
begin
If StringGrid2.Cells[0,TCount]=S2 then
begin
ENCount := TCount;
StringGrid2.Cells[1,TCount] :=S1;
KofQ[StrToInt(s2)] := StrToInt(s1);
end;
end;
If ENCount = 0 then
begin
KofQ[StrToInt(s2)] := StrToInt(s1);
StringGrid2.Cols[0].Append(Edit1.Text);
StringGrid2.Cols[1].Append(Edit2.Text);
StringGrid2.RowCount := StringGrid2.RowCount+ 1;
end;
end
else
begin
MessageDlg('Ошибка ввода данных ! ',mtWarning,[mbOk],0);
exit;
end
end
end;
procedure TForm1.Button5Click(Sender: TObject);
var I : word;
begin
For i := 1 TO StringGrid1.RowCount -2 do
StringGrid1.Rows[i].Clear;
StringGrid1.RowCount := 2;
For i := 1 TO StringGrid2.RowCount -2 do
StringGrid2.Rows[i].Clear;
StringGrid2.RowCount := 2;
RichEdit1.Lines.Clear;
RichEdit2.Lines.Clear;
RichEdit3.Lines.Clear;
for i := 0 to 65535 do
begin
KofP[i] := 0;
KofQ[i] := 0;
KofS[i] := 0;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
Var i : word;
begin
s := '';
ss:= '';
RichEdit1.Lines.Clear;
RichEdit2.Lines.Clear;
for i := 65535 downto 0 do
begin
If KofP[i] <> 0 then
If Length(s) < 220 then
S := S + IntToStr(KofP[i])+'X^'+IntToStr(i)+'+'
else
begin
RichEdit1.Lines.Add(s);
S := IntToStr(KofP[i])+'X^'+IntToStr(i)+'+';
end;
end;
for i := 65535 downto 0 do
begin
If KofQ[i] <> 0 then
If Length(ss) < 220 then
SS := SS + IntToStr(KofQ[i])+'X^'+IntToStr(i)+'+'
else
begin
RichEdit2.Lines.Add(ss);
SS := IntToStr(KofQ[i])+'X^'+IntToStr(i)+'+';
end;
end;
RichEdit1.Lines.Add(Copy(s,1,length(s)-1));
RichEdit2.Lines.Add(Copy(ss,1,length(ss)-1));
Button4.Enabled := True;
Button3.Enabled := True;
end;
procedure TForm1.Button4Click(Sender: TObject);
var t : Byte;
i :word;
begin
t := 0;
for i := 65535 downto 0 do
begin
If KofP[i]<>KofQ[i] then t := 1
end;
If t= 0 then ShowMessage('Списки равны')
elseShowMessage('Списки не равны');
end;
procedure TForm1.Button3Click(Sender: TObject);
Var i : Word;
begin
s := '';
RichEdit3.Lines.Clear;
for i := 0 to 65535 do
KofS[i]:= KofP[i]+KofQ[i];
for i := 65535 downto 0 do
begin
If KofS[i] <> 0 then
If Length(s) < 220 then
S := S + IntToStr(KofS[i])+'X^'+IntToStr(i)+'+'
else
begin
RichEdit1.Lines.Add(s);
S := IntToStr(KofS[i])+'X^'+IntToStr(i)+'+';
end;
end;
RichEdit3.Lines.Add(Copy(s,1,length(s)-1));
end;
end.
Результаты работы программы:
Описание программы:
Программа служит для построения на основе введенных коэффициентов 2-х списков и может выполнять так же :
·Сравнениеэтих спиков.
·Построение многочлена суммы этих списков.
Описание процедур:
procedure FormCreate(Sender: TObject)
Устанавливает начальные параметры при загрузке программы.
procedure Button5Click(Sender: TObject)
Производит “очистку” программы.
procedure Button2Click(Sender: TObject)
Создание списков.
procedure Button4Click(Sender: TObject)
Проверка списков на равенство.
procedure Button3Click(Sender: TObject)
Составление суммы.
Литература :
В.В. Фаронов . Delphi 6. Учебный курс.