Jump to content
Fórum Script Brasil
  • 0

Matriz 2x2


Guest - Diego -
 Share

Question

2 answers to this question

Recommended Posts

  • 0

Quando você diz fazer uma matriz 2x2, imagino que seja a idéia visual para montar a matriz,

não é isso?

Uma idéia seria colocar 4 Edits no formato de duas linhas e duas colunas, afinal este é o formato de uma matriz 2x2, não é? Temos que usar 5 variáveis do tipo extended, 4 para armazenar os valores dos edits e uma para o resultado.

Bom faça o seguinte: coloque quatro edits e renomei eles para txta11, txta12,txta21 e txta22.

Coloque um componente button e renomei-o para cmdCalcularD2.

Coloque om outro Edit, para receber o resultado, renomeando-o para txtRD2.

Um código(para o button) poderia ser o seguinte:

procedure TfrmPrincipal.cmdCalcularD3Click(Sender: TObject);
Var
  a11, a12,a21,a22: Extended;
  RD2: Extended;
begin
try
  If txta11.Text = '' Then
    begin
      Messagebox(handle,'Nenhum valor deve ser deixado em branco.','FALTA UM VALOR',MB_IconExclamation);
      txta11.SetFocus;
      abort;
    end;

  If txta12.Text = '' Then
    begin
      Messagebox(handle,'Nenhum valor deve ser deixado em branco.','FALTA UM VALOR',MB_IconExclamation);
      txta12.SetFocus;
      abort;
    end;

  If txta21.Text = '' Then
    begin
      Messagebox(handle,'Nenhum valor deve ser deixado em branco.','FALTA UM VALOR',MB_IconExclamation);
      txta21.SetFocus;
      abort;
    end;

  If txta22.Text = '' Then
    begin
      Messagebox(handle,'Nenhum valor deve ser deixado em branco.','FALTA UM VALOR',MB_IconExclamation);
      txta22.SetFocus;
      abort;
    end;

  a11:= StrToFloat(txta11.Text);
  a12:= StrToFloat(txta12.Text);
  a21:= StrToFloat(txta21.Text);
  a22:= StrToFloat(txta22.Text);

RD2:= a11*a22 - a12*a21;
txtRD2.Text:= FloatToStr(RD2);

except
  On E:EConvertError do
    Messagebox(handle,'Expressões como valor não serão aceitas.'+#13+'Por exemplo, 3-4  ou  -1-5, não são valores válidos !'+#13+'O sinal de menos só pode aparecer uma vez e antes do número.','ERRO',MB_IconStop);
end;
end;
É claro que muitos outros detalhes podem ser implementados, como colocar um botao para limpar todos os valores dos edits etc... Com a idéia acima você pode passar para o cálculo de um determinanre 3x3(usando a regra de Sarrus) e depois para um 4x4, usando o teorema de Laplace. Diversos outros detalhes deverão ser cuidados, por exemplo, para que o programa não tenha erros. Por exemplo: para o usuário digitar apenas números nos edits. neste caso no evento OnKeyPress de cada edit coloque o código abaixo:
If Not(Key In ['0'..'9',',','-',#8]) Then
    begin
      beep;
      Abort;
    end;

E outra coisas mais, como por exemplo digitar apenas uma vírgula em edit etc..

O básico está aí em cima.

Link to comment
Share on other sites

  • 0

Diego,

um código alternativo ao meu, muito mais otimizado e enxuto, que foi sugerido a mim por M.P. pelo colega Micheus é o seguinte:

procedure TForm1.Button1Click(Sender: TObject);
  function ValidaNum(txtValue :TEdit) :Extended;
  begin
    if txtValue.Text = '' Then
    begin
      Messagebox(handle,'Nenhum valor deve ser deixado em branco.','FALTA UM VALOR',MB_IconExclamation);
      txtValue.SetFocus;
      abort;
    end else
      Result := StrToFloat(txtValue.Text);
  end;

var
  a11, a12,a21,a22: Extended;
  RD2: Extended;
begin
  try
    a11:= ValidaNum(txta11);
    a12:= ValidaNum(txta12);
    a21:= ValidaNum(txta21);
    a22:= ValidaNum(txta22);

    RD2:= a11*a22 - a12*a21;
    txtRD2.Text:= FloatToStr(RD2);
  except
    On E:EConvertError do
      Messagebox(handle,'Expressões como valor não serão aceitas.'+#13+'Por exemplo, 3-4  ou  -1-5, não são valores válidos !'+#13+'O sinal de menos só pode aparecer uma vez e antes do número.','ERRO',MB_IconStop);
  end;
end;

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...