Ir para conteúdo
Fórum Script Brasil
  • 0

Matriz 2x2


Guest - Diego -

Pergunta

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...