Página 1 de 1

Programa de calculo de frações

MensagemEnviado: 20 Out 2008 10:08
por leafar_stdg
Amigos,

Tenho que fazer um programa que faça algumas operações com frações em C.

Estas operações são adição, subtração, multiplicação, divisão, comparação e potencia.

As operações básicas fiz sem provblemas mmas meu problema está no claculo da potencia que deve ser o seguinte:

potenciação, com as opções:
- racional elevado a inteiro. P.ex. (1/3)2
- racional elevado a outro racional. P.ex. (1/3)1/4


Alguem tem alguma idéia de como fazer estas operações ou algum algoritmo??

Agradeço a ajuda

Re: Programa de calculo de frações

MensagemEnviado: 20 Out 2008 10:57
por Paulo
leafar_stdg escreveu:Amigos,

Tenho que fazer um programa que faça algumas operações com frações em C.

Estas operações são adição, subtração, multiplicação, divisão, comparação e potencia.

As operações básicas fiz sem provblemas mmas meu problema está no claculo da potencia que deve ser o seguinte:

potenciação, com as opções:
- racional elevado a inteiro. P.ex. (1/3)2
- racional elevado a outro racional. P.ex. (1/3)1/4


Alguem tem alguma idéia de como fazer estas operações ou algum algoritmo??

Agradeço a ajuda


- racional elevado a inteiro. P.ex. (1/3)2
Código: Selecionar todos
  float a = 1/3;
  pow(a,2);

- racional elevado a outro racional. P.ex. (1/3)1/4
Código: Selecionar todos
  float a = 1/3;
  float b = 1/4;
  pow(a,b);



Até +....
Paulo D.

MensagemEnviado: 20 Out 2008 11:18
por leafar_stdg
Paulo,

obrigado pela resposta, mas usando a math.h e a função pow, vai me retornar um float e preciso que o retorno seja inteiro pra poder imprimir no formato a/b.

o esqueleto da função acredito que deva ser o seguinte:

.. potencia_de_potencia()
{
Escreva(Numerador da base);
Leia(Numerador da base);
Escreva(Denominador da base);
Leia(Denominador da base);
Escreva(Numerador do expoente);
Leia(Numerador do expoente);
Escreva(Denominador do expoente);
Leia(Denominador do expoente);

result = (** aqui entra o cálculo **)

// Resposta

Escreva(Numerador result)
Escreva(Denominador result)

}

MensagemEnviado: 20 Out 2008 13:41
por Paulo
leafar_stdg escreveu:Paulo,

obrigado pela resposta, mas usando a math.h e a função pow, vai me retornar um float e preciso que o retorno seja inteiro pra poder imprimir no formato a/b.

o esqueleto da função acredito que deva ser o seguinte:

.. potencia_de_potencia()
{
Escreva(Numerador da base);
Leia(Numerador da base);
Escreva(Denominador da base);
Leia(Denominador da base);
Escreva(Numerador do expoente);
Leia(Numerador do expoente);
Escreva(Denominador do expoente);
Leia(Denominador do expoente);

result = (** aqui entra o cálculo **)

// Resposta

Escreva(Numerador result)
Escreva(Denominador result)

}


Não sei se entendi mto bem o que vc quer, mas vamos lá:

Pegando o seu exemplo:

- racional elevado a inteiro. P.ex. (1/3)2

Código: Selecionar todos
  int a = 1;
  int b = 3;
  int c = 2;
  float d, e;
 
  d = pow(a,c);
  e = pow(b,c);
  printf("Resultado = %f/%f", d,e);


- racional elevado a outro racional. P.ex. (1/3)1/4

Código: Selecionar todos
  int a = 1;
  int b = 3;
  int c = 1;
  int d = 4;
  float e, f, g;
 
  e = pow(a,c);
  f = pow(a,d);

  g = pow(b,c);
  h = pow(b,d);

  printf("Resultado = %f/%f", (e/f), (g/h));



Seria isso???
Eu usei o seu exemplo, mas é claro que no lugar dos valores fixos bastaria substituir pelas entradas (leituras) que vc mencionou em cima.

Espero ter ajudado, caso não seja isso, coloque aí que vou tentar de ajudar de outra forma.

Até +...
Paulo D.

MensagemEnviado: 20 Out 2008 13:56
por leafar_stdg
Valeu pela força, Paulo.

Vou testar agora e assim q tiver resultado posto.