Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

блок схема

35K
04 мая 2008 года
Violina
3 / / 06.04.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.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.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог