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

simplificar fração em delphi


flavioavilela

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0
tenho um lugar no meu sistema em que a pessoa tem que informar uma fração...

gostaria de saber se caso a pessoa coloque 2/4, como simplificar isso para 1/2? ou seja, como simplificar uma fração???

flavioavilela... simplificação de fração no delphi é dificil achar na net, entretanto isso não quer dizer que seja impossivel fazer alguma coisa nesse sentido.

voce como programador deve usar a lógica e o conhecimento do delphi para criar as rotinas necessarias para a solução desse problema.

então se voce se basear nos conceitos matemáticos, voce consegue montar essa rotina;

CONCEITO DE FRAÇÕES

Fração é todo par de números naturais na forma que mostra a figura 1,

onde: o denominador “b” indica em quantas partes iguais o inteiro foi divido. O

numerador “a” indica a quantidade utilizadas dessas partes. Como não existe divisão

por zero, não existe fração com denominador igual a zero.

Figura 1: Modelo de Fração.

a

-

b

LEITURA DE FRAÇÕES

Para lermos uma fração, primeiro lemos o numerador, depois lemos o

denominador, da seguinte forma:

a) Denominadores 2 e 3 são lidos como meio e terços;

B) Denominadores entre 4 e 9 são lidos como números ordinais;

c) Denominadores 10, 100, 1000 são lidos como décimos, centésimos,

milésimos;

d) Denominadores acima de 10 (excluído os do item c) são lidos

acrescentando-se a palavra “avos” no final.

Para começar, faríamos um modelo em um esquema no delphi de uma fração,

ou seja, essa estrutura matemática que tem um numerador e um denominador que divide o

numerador, por exemplo, 18/6.

A fração será o objeto e terá duas propriedades, o numerador e o denominador.

Logo, poderia ter vários métodos como simplificar, somar com outra fração ou número,

subtrair com outra fração, etc.

De fato, ao se dividir os dois termos de uma fração pelo seu mdc, obtem-se quocientes primos entre si,

e portanto formam uma fração irredutível. Além do mais, essa fração é igual à fração original uma vez

que foi obtida dividindo-se seus dois termos por um mesmo número.

No exemplo anterior o mdc(18,6) = 6 = 2 x 3, os fatores utilizados para se determinar a forma

irredutível da fração dada. O mesmo resultado, claro, seria obtido se efetuassemos a divisão por 6.

Simplificar uma fração é reduzir esta fração à uma fração mais simples mantendo-se a proporção da fração original.

E o princípio que norteia a simplificação de frações é: uma fração não se altera quando dividimos seus termos por

um mesmo número diferente de zero.

Observe que para simplificar frações é necessário que haja um divisor comum, além da unidade, aos seus termos. E,

torná-la irredutível é obter a fração equivalente em que o único divisor comum aos seus termos é a unidade, ou seja,

quando o mdc – máximo divisor comum – entre o numerador e o denominador é igual a 1, o que é o mesmo que os seus dois termos serem primos entre si.

Portanto, concluímos que ao fatorar dois ou mais números, o cálculo do mdc será calculado com a multiplicação dos

fatores primos comum aos termos.

como obter os numeros primos:

http://scriptbrasil.com.br/forum/index.php...st&p=576041

OBS: A base do que voce precisa está ai.... tente se esforçar para conseguir desenvolver o raciocínio lógico em cima desse conceito.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

boa tarde galera... fuçando na net achei uma função que nos tras o mmc de duas frações... imagino que será muito útil para todos nós aqui do forum...

function TFrmMenu_Geral.MMC(x1, x2: Integer): Integer;
var
  Resp, Prime: Integer;
  Flip: Boolean;
begin
//Inicializando as variáveis de controle
  Flip := false;
  Resp := 1;
  Prime := 2;

  while (x1 > 1) or (x2 > 1) do
  begin
  //Se x1 for divisível por Prime...
    if (x1 > 1) and ((x1 mod Prime) = 0) then
    begin
      x1 := x1 div Prime;
      Flip := true;
    end;

    //Se x2 for divisível por Prime...
    if (x2 > 1) and ((x2 mod Prime) = 0) then
    begin
      x2 := x2 div Prime;
      Flip := true;
    end;

    if Flip then
    begin
      Resp := Resp * Prime;
      Flip := false;
    end
    else
      NextPrime(Prime);
  end;
    result := Resp;
end;
verificar os números primos...
procedure TFrmMenu_Geral.NextPrime(var P: Integer);
begin
  if P = 2 then
    P := 3
    else if P = 3 then
    P := 5
    else if P = 5 then
    P := 7
    else if P = 7 then
    P := 11
    else if P = 11 then
    P := 13
    else if P = 13 then
    P := 17
    else if P = 17 then
    P := 19
    else if P = 19 then
    P := 23
    else if P = 23 then
    P := 29
    else if P = 29 then
    P := 31
    else if P = 31 then
    P := 37
    else if P = 37 then
    P := 41
    else if P = 41 then
    P := 43
    else if P = 43 then
    P := 47
    else if P = 47 then
    P := 49
    else if P = 53 then
    P := 59
end;
chamada da função...
m := MMC(x2, y2); // <-- Chamar a função pro MMC aqui
  r2 := m;

  x1 := (m div x2) * x1;
  y1 := (m div y2) * y1;
  r1 := x1 + y1;

  result := IntToStr(r1) + ''/'' + IntToStr(r2);

Link para o comentário
Compartilhar em outros sites

  • 0
gostaria de saber se caso a pessoa coloque 2/4, como simplificar isso para 1/2? ou seja, como simplificar uma fração???

flavioavilela... imagino que voce não saiba montar o código ... na verdade é mais simples do que parece, acho que com umas 10 linhas de código seria suficiente para resolver o seu problema.

se voce não conseguir ( mas tente fazer ) depois posto o código para simplificar uma fração até a forma irredutivel

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Simplificar ma fração...

basicamente consiste em dada uma determinada fração

exemplo: imagine que voce digite em um Edit a seguinte fração: 18/6

A fração será o objeto e terá duas propriedades, o numerador e o denominador... então deverá cria duas variaveis, uma para o numerador ( ex: num ) e outra para o denominador ( ex: den ) ambas deverão ser do tipo integer.

agora basta separar os numeros da fração para cada uma das variaveis

ex: num := 18 e den := 6

para fazer a separação voce deve retirar da string ( '18/6') o 18 e o 6 ignorando a barra

o princípio que norteia a simplificação de frações é: uma fração não se altera quando dividimos seus termos por

um mesmo número diferente de zero.

agora basta montar um simples rotina onde os termos da fração serão divididos por um mesmo numero

Observe que para simplificar frações é necessário que haja um divisor comum, além da unidade, aos seus termos. E, torná-la irredutível é obter a fração equivalente em que o único divisor comum aos seus termos é a unidade

Portanto, concluímos que ao fatorar dois ou mais números, o cálculo do mdc será calculado com a multiplicação dos

fatores primos comum aos termos.

o que é o mesmo que os seus dois termos serem primos entre si.

Ou seja, a forma irredutuvel da fração será dois numeros primos entre si.

então uma simples divisão de cada um dos numeros ( num e den ) por numeros primos resultará a fração simplificada

veja se consegue montar ... é mais facil do que parece. só precisa usar um pouco a massa cinzenta... rs

abraço

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
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...