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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2011, 19:35   #1
EnotIvan
Новичок
Джуниор
 
Регистрация: 14.05.2011
Сообщений: 2
По умолчанию Написать процедуру Delphi (Определитель матрицы)

Вот собственно то что есть) Нужно написать процедуру которая бы находила определитель матриц 4х4 - 10х10 (В этом варианте она даже не начата, все что пытался делать неработает)
Open и save диалоги удалил ибо не помещается

Помогите пожалуйста уж никак не сообразить(((


Код:
var
  Form1: TForm1;
  N:integer;


implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject); //Кнопка создания таблицы


begin

N:=StrToInt(edit1.Text);
  if (N>10) or (N<1) then begin
    Showmessage ('Vvedite znachenie OT 1 DO 10');
     edit1.Text:=chr(0);
     end
      else begin
      tabl.ColCount:=N;
      tabl.RowCount:=N;
      tabl.visible:=True;
      label2.Caption:= 'Введите элементы матрицы или выбирите из файла';
      edit1.visible:=false;
      label1.Visible:=false;
      label2.Visible:=true;
      tabl.Height:=41*N+9;
      tabl.Width:=41*N+9;
      button1.Visible:=false;
      button2.Visible:=true;
      button4.Enabled:=true;
      label5.Visible:=false;
      label6.Visible:=false;
      label7.Visible:=false;
      label8.Visible:=false;
      label9.Visible:=false;
      label10.Visible:=false;

    end;
end;

procedure TForm1.tablKeyPress(Sender: TObject; var Key: Char);// условие допустимых значений, которые можно вводить в таблицу
begin

  case Key of
    '0'..'9' :      ;
    '-'      :      ;
    #8       :      ;
    #13      :      ;
  else key:=chr(0);
  end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);// условие допустимых значений, которые можно вводить в Edit1
begin
  case Key of
    '0'..'9' :      ;
    #8       :      ;
    #13      :      ;
  else key:=chr(0);
  end;
end;


procedure matrix22;//Процедура для частного случая (матрица 2х2)
var
x:integer;
q,w,e,r:integer;

begin
q:=strtoint(Form1.tabl.Cells[0,0]);
w:=strtoint(Form1.tabl.Cells[1,1]);
e:=strtoint(Form1.tabl.Cells[1,0]);
r:=strtoint(Form1.tabl.Cells[0,1]);
x:=q*w-e*r;
Form1.label3.caption:='Определитель равен '+ intToStr(x)+#13;
end;

procedure matrix33;//Процедура для частного случая (матрица 3х3)
var
x:integer;
a11,a12,a13,a21,a22,a23,a31,a32,a33:integer;

begin
a11:=strtoint(Form1.tabl.Cells[0,0]);
a22:=strtoint(Form1.tabl.Cells[1,1]);
a33:=strtoint(Form1.tabl.Cells[2,2]);
a12:=strtoint(Form1.tabl.Cells[1,0]);
a13:=strtoint(Form1.tabl.Cells[2,0]);
a21:=strtoint(Form1.tabl.Cells[0,1]);
a23:=strtoint(Form1.tabl.Cells[2,1]);
a31:=strtoint(Form1.tabl.Cells[0,2]);
a32:=strtoint(Form1.tabl.Cells[1,2]);
x:=a11*a22*a33+a12*a23*a31+a21*a32*a13-a31*a22*a13-a12*a21*a33-a11*a23*a32;
Form1.label3.caption:='Определитель равен '+ intToStr(x)+#13;
end;







procedure TForm1.Button2Click(Sender: TObject);  // Кнопка расчета определителя
begin
  if N=1 then
  Form1.Label3.Caption:='Определитель равен '+ Form1.tabl.Cells[0,0];
  if N=2 then
  matrix22;
  if N=3 then
  matrix33;



   button5.Enabled:=true;
   button6.Enabled:=true;
   button7.Enabled:=true;
   button4.Enabled:=false;
   button2.Visible:=false;
   label2.Visible:=false;
   label3.Visible:=true;
   button1.Visible:=false;
end;

procedure TForm1.Button3Click(Sender: TObject);   // Кнопка завершения программы
begin
Form1.Close;
end;



procedure TForm1.button7Click(Sender: TObject);
var
  i:Integer;
begin
  button2.Visible:=true;
  Edit1.Visible:=true;
  Label1.Visible:=true;
  Label3.Visible:=False;
  Button1.Visible:=True;
  Button2.Visible:=False;
  tabl.visible:=false;
  button7.Enabled:=false;
  Label4.Visible:=false;
  button4.Enabled:=false;
  button5.Enabled:=false;
  button6.Enabled:=false;
  label5.Visible:=true;
  label6.Visible:=true;
  label7.Visible:=true;
  label8.Visible:=true;
  label9.Visible:=true;
  label10.Visible:=true;

  For i:=0 to tabl.RowCount-1 do
 tabl.Rows[i].Clear;
 Edit1.Clear;

end;

procedure TForm1.Button6Click(Sender: TObject);
{Печать}
var
  i, j: integer;
  PText: TextFile;
begin
  inherited;

  if PrintDialog1.Execute then
  begin
    AssignPrn(PText);
    Rewrite(PText);

    try
      Printer.Canvas.Font:= Tabl.Font;

      for i:= 0 to Tabl.RowCount-1 do
      begin

        for j:= 0 to Tabl.ColCount-1 do
          write(PText, Tabl.Cells[j, i]);

        writeln(PText);
      end;

    finally

      CloseFile(PText);
    end;

  end;

end;

end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.05.2011 в 20:52.
EnotIvan вне форума Ответить с цитированием
Старый 14.05.2011, 20:53   #2
EnotIvan
Новичок
Джуниор
 
Регистрация: 14.05.2011
Сообщений: 2
По умолчанию

Delphi 7

вывод найденного определителя в третий лейбл
EnotIvan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определитель и транспонирование матрицы в Delphi Ivan3000 Помощь студентам 9 03.05.2013 15:26
Определитель Матрицы(реккурсия С) XSerGx Общие вопросы C/C++ 1 08.01.2011 19:29
Определитель матрицы 2 на 2 С++ Mashul'ka Помощь студентам 1 03.11.2010 00:08
Определитель матрицы Snake_ua Помощь студентам 7 10.02.2010 10:44
Определитель квадратной матрицы Tomoyo Помощь студентам 22 04.11.2008 22:37