Новичок
Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.5.2008
Репутация: нет Всего: нет
|
Огромнейшая просьба... о помощи.. Ребята помогите с блок схемой, хоть какую нибудь... нарисуйте очень прошу... завтра нужно сдавать курсовую... а блок схемы нет... не получается у меня ничего... пожалуйста выручите кто-нибудь... Спасибо) | Код | unit Unit6;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, XPMan, AppEvnts, IniFiles, Math, Buttons;
type TMatrix = array of array of Extended; TForm6 = class(TForm) ExitButton: TButton; GridA1: TStringGrid; FillButton: TButton; ClearButton: TButton; GridB1: TStringGrid; GridC1: TStringGrid; GridA2: TStringGrid; GridB2: TStringGrid; GridC2: TStringGrid; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; SaveButton: TBitBtn; OpenButton: TBitBtn; CalcButton: TBitBtn; XPManifest1: TXPManifest; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; ApplicationEvents1: TApplicationEvents; procedure FillButtonClick(Sender: TObject); procedure CalcButtonClick(Sender: TObject); procedure ClearButtonClick(Sender: TObject); procedure SaveButtonClick(Sender: TObject); procedure OpenButtonClick(Sender: TObject); procedure ExitButtonClick(Sender: TObject); procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
private { Private declarations } public procedure Matrix2Grid(const M: TMatrix; Grid: TStringGrid); procedure ExchangeCols(var M: TMatrix; const N, K: Integer); procedure ClearGrid(Grid: TStringGrid); procedure SaveMatrix(const M: TMatrix; const ASection: string; Ini: TIniFile); procedure LoadMatrix(var M: TMatrix; const ASection: string; Ini: TIniFile); procedure CopyMatrix(const Source: TMatrix; var Dest: TMatrix); end;
var Form6: TForm6; A1, B1, C1: TMatrix; // Исходные матрицы A2, B2, C2: TMatrix; // Преобразованные матрицы
implementation
uses Unit1;
{$R *.dfm}
procedure TForm6.FillButtonClick(Sender: TObject); var i, j: Integer; begin // Вычисляем элементы матриц и заполняем таблицы SetLength(A1, 12, 9); for i:= 0 to Length(A1) - 1 do for j:= 0 to Length(A1[0]) - 1 do A1[i, j]:= Tan((j + 1)) + Exp(Cos((i + 1))); Matrix2Grid(A1, GridA1);
SetLength(B1, 8, 15); for i:= 0 to Length(B1) - 1 do for j:= 0 to Length(B1[0]) - 1 do B1[i, j]:= Sin(3.2 * (j + 1) + 4.2) + Exp(Tan(1.5 * (i + 1))); Matrix2Grid(B1, GridB1);
SetLength(C1, 7, 11); for i:= 0 to Length(C1) - 1 do for j:= 0 to Length(C1[0]) - 1 do C1[i, j]:= Cos(12.4 * (j + 1) + 1); Matrix2Grid(C1, GridC1);
// Очистка преобразованных данных ClearGrid(GridA2); ClearGrid(GridB2); ClearGrid(GridC2); SetLength(A2, 0, 0); SetLength(B2, 0, 0); SetLength(C2, 0, 0); end;
procedure TForm6.Matrix2Grid(const M: TMatrix; Grid: TStringGrid); var i, j: Integer; begin // Заполение таблицы Grid элементами матрицы M Grid.RowCount:= Length(M); Grid.ColCount:= Length(M[0]);
for i:= 0 to Length(M) - 1 do for j:= 0 to Length(M[0]) - 1 do Grid.Cells[j, i]:= FormatFloat('0.00', M[i, j]); end;
procedure TForm6.CalcButtonClick(Sender: TObject); begin // Перестановка столбцов матриц CopyMatrix(A1, A2); // Копирование матрицы ExchangeCols(A2, 0, Length(A2[0]) - 1); // Перестановка столбцов Matrix2Grid(A2, GridA2); // Вывод в таблицу
CopyMatrix(B1, B2); // Копирование матрицы ExchangeCols(B2, 2, 4); // Перестановка столбцов Matrix2Grid(B2, GridB2); // Вывод в таблицу
// Матрица C1 не изменяется, т.к. 1-й и последний столбцы равны CopyMatrix(C1, C2); // Копирование матрицы ExchangeCols(C2, 0, Length(C2[0]) - 1); // Перестановка столбцов Matrix2Grid(C2, GridC2); // Вывод в таблицу end;
procedure TForm6.ExchangeCols(var M: TMatrix; const N, K: Integer); var Temp: Double; j: Integer; begin // Перестановка столбцов N и K матрицы M for j:= 0 to Length(M) - 1 do begin Temp:= M[j, N]; M[j, N]:= M[j, K]; M[j, K]:= Temp; end; end;
procedure TForm6.ClearButtonClick(Sender: TObject); begin // Очистка всех таблиц ClearGrid(GridA1); ClearGrid(GridB1); ClearGrid(GridC1); ClearGrid(GridA2); ClearGrid(GridB2); ClearGrid(GridC2);
// Очистка матриц SetLength(A1, 0, 0); SetLength(B1, 0, 0); SetLength(C1, 0, 0); SetLength(A2, 0, 0); SetLength(B2, 0, 0); SetLength(C2, 0, 0); end;
procedure TForm6.ClearGrid(Grid: TStringGrid); var i: Integer; begin // Очистка таблицы Grid for i:= 0 to Grid.RowCount - 1 do Grid.Rows[i].Clear();
Grid.ColCount:= 0; Grid.RowCount:= 0; end;
procedure TForm6.SaveMatrix(const M: TMatrix; const ASection: string; Ini: TIniFile); var i, j: Integer; begin // Сохранение матрицы M в секцию ASection ini-файла Ini if not Assigned(Ini) then Exit;
if Ini.SectionExists(ASection) then Ini.EraseSection(ASection);
// Запись размерности матрицы Ini.WriteInteger(ASection, 'Строки', Length(M)); Ini.WriteInteger(ASection, 'Столбцы', Length(M[0]));
// Запись элементов матрицы for i:= 0 to Length(M) - 1 do for j:= 0 to Length(M[0]) - 1 do Ini.WriteFloat(ASection, 'Cells[' + IntToStr(i + 1) + ', ' + IntToStr(j + 1) + ']', M[i, j]); end;
procedure TForm6.LoadMatrix(var M: TMatrix; const ASection: string; Ini: TIniFile); var i, j: Integer; k, n: Integer; // Размерность матрицы begin // Загрузка матрицы M из секции ASection ini-файла Ini if not Assigned(Ini) then Exit;
// Чтение размерности и выделение памяти под матрицу k:= Ini.ReadInteger(ASection, 'Строки', 0); n:= Ini.ReadInteger(ASection, 'Столбцы', 0); SetLength(M, k, n);
// Чтение элементов матрицы for i:= 0 to Length(M) - 1 do for j:= 0 to Length(M[0]) - 1 do M[i, j]:= Ini.ReadFloat(ASection, 'Cells[' + IntToStr(i + 1) + ', ' + IntToStr(j + 1) + ']', 0.0); end;
procedure TForm6.SaveButtonClick(Sender: TObject); var Ini: TIniFile; begin // Сохранение матриц в файл if SaveDialog1.Execute() then begin Ini:= TIniFile.Create(SaveDialog1.FileName); try SaveMatrix(A1, 'Матрица A1', Ini); SaveMatrix(B1, 'Матрица B1', Ini); SaveMatrix(C1, 'Матрица C1', Ini); SaveMatrix(A2, 'Матрица A2', Ini); SaveMatrix(B2, 'Матрица B2', Ini); SaveMatrix(C2, 'Матрица C2', Ini); finally Ini.Free(); end; end; end;
procedure TForm6.OpenButtonClick(Sender: TObject); var Ini: TIniFile; begin // Загрузка исходных матриц из файла if OpenDialog1.Execute() then begin ClearButton.Click(); // Очистка таблиц и матриц Ini:= TIniFile.Create(OpenDialog1.FileName); try LoadMatrix(A1, 'Матрица A1', Ini); Matrix2Grid(A1, GridA1);
LoadMatrix(B1, 'Матрица B1', Ini); Matrix2Grid(B1, GridB1);
LoadMatrix(C1, 'Матрица C1', Ini); Matrix2Grid(C1, GridC1);
LoadMatrix(A2, 'Матрица A2', Ini); Matrix2Grid(A2, GridA2);
LoadMatrix(B2, 'Матрица B2', Ini); Matrix2Grid(B2, GridB2);
LoadMatrix(C2, 'Матрица C2', Ini); Matrix2Grid(C2, GridC2); finally Ini.Free(); end; end; end;
procedure TForm6.ExitButtonClick(Sender: TObject); begin Close(); Form1.Show; end;
procedure TForm6.CopyMatrix(const Source: TMatrix; var Dest: TMatrix); var k, n: Integer; // Размерность матрицы i, j: Integer; begin // Копирование данных из матрицы Source в матрицу Dest k:= Length(Source);
if (k <> 0) then n:= Length(Source[0]) else n:= 0;
SetLength(Dest, k, n); // Установка размеров результата //Move(Source, Dest, SizeOf(Double) * k * n); // Копирование данных for i:= 0 to Length(Source) - 1 do for j:= 0 to Length(Source[0]) - 1 do Dest[i, j]:= Source[i, j]; end;
procedure TForm6.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); begin FillButton.Enabled:= (Length(A1) + Length(B1) + Length(C1) = 0); CalcButton.Enabled:= not FillButton.Enabled; ClearButton.Enabled:= not FillButton.Enabled; SaveButton.Enabled:= (not FillButton.Enabled) and (Length(A2) <> 0) and (Length(B2) <> 0) and (Length(C2) <> 0); end;
end.
|
|