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

Calcular mmc de dois números


Amanda Luize

Pergunta

EM C

Programa que calcula a soma de duas frações , entrada na forma a/b + c/d, saída simplificada, tipo, se o resultado for 9/6, você deve imprimir 3/2. Entretanto, se o resultado for 2/1, o resultado deve continuar sendo 2/1 e não 2.

Eu consigo fazer a soma normal, já testei com vários numeros e da certo o calculo, mas eu não consigo simplificar o resultado, já tentei de todas as formas. Obrigado desde já a quem me ajudar.

#include <stdio.h>
#include <stdlib.h>

main()
{
        int a,b,c,d,r,s;

        scanf("%d/%d%d/%d", &a,&b,&c,&d);

        r= (a*d) + (b*c);
        s= (b*d);


            if ((b==0) || (d==0))
               {
                printf("entrada invalida!\n");
               }

            if((b==d))
            {
                printf("%d/%d\n", a+c ,b);
            }


            else
            {
                printf("%d/%d\n", r,s );
            }


    return 0;

}

É só colocar as entradas na mesma linha, apenas separadas por um espaço, tipo 12/5 + 8/7, coloca 12/5 8/7. Resultado 124/35.

Sei que ta estranho, mas meu professor quer a entrada assim.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Se já pensou em testar tipo:

vamos supor que o resultado seja a/b, você faz assim:

do {

x == 2 //Inicio da divisão dos numeros, ele vai testando até ele achar um numero que o a e o b seja divisivel... Não começa em 1 pois todos os numeros são divisiveis por 1, já que você tirou o 0 da brincadeira...

do{

x = x + 1; // Caso o x não seja divisil por a e b, ele aumenta em 1 o x...

} while ((a % x == 0) && (b % x == 0)) //Ele vai continuar fazendo a operação enquanto ele não achar um a % x E um b % x

a = a / x;

b = b / x;

} while (a % b == 0) //Ele vai fazer a operação de divisao enquanto o a for divisivel por b...

Cara não sei te dizer se isso vai dar 100% certo hehe porque to sem programa pra montar isso, mas acho que esse é o caminho...

Aaahh não esqueça de criar um if para determinar que o maior deve ser o a e o menor deve ser o b, só pra conta, depois voce volta o normal, porque no a%b == 0, o maior numero tem que vir primeiro...

Editado por atkins
Link para o comentário
Compartilhar em outros sites

  • 0
EM C

Programa que calcula a soma de duas frações , entrada na forma a/b + c/d, saída simplificada, tipo, se o resultado for 9/6, você deve imprimir 3/2. Entretanto, se o resultado for 2/1, o resultado deve continuar sendo 2/1 e não 2.

Eu consigo fazer a soma normal, já testei com vários numeros e da certo o calculo, mas eu não consigo simplificar o resultado, já tentei de todas as formas. Obrigado desde já a quem me ajudar.

#include <stdio.h>
#include <stdlib.h>

main()
{
        int a,b,c,d,r,s;

        scanf("%d/%d%d/%d", &a,&b,&c,&d);

        r= (a*d) + (b*c);
        s= (b*d);


            if ((b==0) || (d==0))
               {
                printf("entrada invalida!\n");
               }

            if((b==d))
            {
                printf("%d/%d\n", a+c ,b);
            }


            else
            {
                printf("%d/%d\n", r,s );
            }


    return 0;

}
É só colocar as entradas na mesma linha, apenas separadas por um espaço, tipo 12/5 + 8/7, coloca 12/5 8/7. Resultado 124/35. Sei que ta estranho, mas meu professor quer a entrada assim.
Para simplificar o resultado você vai precisar calcular o m.d.c e não o m.m.c, abaixo como fazê-lo:
#include <stdio.h>

int mdc(int x1, int x2);

int main()
{
    int numerador = 48;
    int denominador = 30;
    int _mdc;

    printf("%d/%d\n", numerador, denominador);

    _mdc = mdc(numerador, denominador);
    numerador = numerador / _mdc;
    denominador = denominador / _mdc;

    // Depois da simplificação

    printf("%d/%d", numerador, denominador);

    return 0;
}

// x1 > x2

int mdc(int x1, int x2)
{
    int dividendo = x1;
    int divisor = x2;
    int resto = 1;

    while(resto)
    {
        resto = dividendo % divisor;

        dividendo = divisor;
        divisor = resto;
    }

    return dividendo;
}

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