Ir ao conteúdo
  • Cadastre-se

FraÇÃo em c


fabiaaano

Posts recomendados

GOSTARIA QUE ME AJUDASSEM NO SEGUINTE PROBLEMA:

Escreva um programa que calcule a soma de duas frações, fornecendo o resultado em forma de fração, seu programa deve verificar se as frações são válidas.

FORMATO DE ENTRADA:Consiste de quatro números inteiros da forma a/b + c/d

EXEMPLO: 12/5 + 8/7

FORMATO DE SAIDA:Consiste de uma fração seguida por um fim de linha.

Deve imprimr ``entrada invalida!´´ caso uma das frações tenha denominador 0.obs:Imprimir sem as aspas.

EXEMPLO:124/35

MEU CODIGO É ESSE:

#include <stdio.h>

#include <stdlib.h>

int main()

{

int a, b, c, d, m, n, o, p, q;

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

if((b!=0)&&(d!=0)&&(b!=d)){

o=b*d;

m=((o/b)*a);

n=((o/d)*c);

p=(m+n);

printf("%d/%d",p, o);}

else if ((b!=0)&&(d!=0)&&(b==d)){

q=a+c;

printf("%d/%d", q, B);}

else if (b==0||d==0){

printf("entrada invalida!");

}

return 0;

}

MAS MEU PROFESSOR DISSE QUE TEM ERROS, ME DESCULPEM OS ERROS, POIS SOU INICIANTE EM C!!!!

Link para o comentário
Compartilhar em outros sites

Primeira coisa a se fazer é verificar o denominador. Se for zero, peça para o usuário digitar outro.

Após ter os dois numeradores e os dois denominadores, verifique se ambos os denominadores são o mesmo número. Se forem, basta somar os numeradores E exibir essa soma dos numeradores como o numerador, e um dos denominadores como o denominador.

Caso os denominadores sejam diferentes, será necessário encontrar o mínimo múltiplo comum. Nem vou dizer como fazer, porque se você pesquisa, encontra fácil.

Divida o MMC pelo primeiro denominador e multiplique pelo numerador. Acumule esse número em uma variável.

Faça a mesma coisa para o outro numerador e denominador, e some o resultado à tal variável.

Depois, basta exibir essa veriável (que será o numerador) e o mmc que será o denominador.

É a matemática da terceira série voltando para assombrar.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Primeira coisa a se fazer é verificar o denominador. Se for zero, peça para o usuário digitar outro.

Após ter os dois numeradores e os dois denominadores, verifique se ambos os denominadores são o mesmo número. Se forem, basta somar os numeradores E exibir essa soma dos numeradores como o numerador, e um dos denominadores como o denominador.

Caso os denominadores sejam diferentes, será necessário encontrar o mínimo múltiplo comum. Nem vou dizer como fazer, porque se você pesquisa, encontra fácil.

Divida o MMC pelo primeiro denominador e multiplique pelo numerador. Acumule esse número em uma variável.

Faça a mesma coisa para o outro numerador e denominador, e some o resultado à tal variável.

Depois, basta exibir essa veriável (que será o numerador) e o mmc que será o denominador.

É a matemática da terceira série voltando para assombrar.

Eu acho que nesses programinhas o mais difícil e relembrar essa matematica do que fazer o codigo :P

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 8 anos depois...

Sei que já faz tempo da sua pergunta, mas tive problema com está mesma questão recentemente, então para as pessoas que teve duvidas com eu, primeiro só achei uma forma para resolver está questão que com auxilio do for ou while, a simplificação só vai sair deste jeito, então não adianta fazer ela sem está ferramenta;:

int main()

{

        ...

        for(int i=2;i<=den;)
        {
            if(i==2)
            {
                for(int j=i;;)
                {
                    if(num%i==0 && den%i==0)
                    {
                        num=num/i;
                        den=den/i;
                       }
                    else
                    {
                        break;
                    }
                }
                i=i+1;
            }
            else
            {
                for(int j=i;;)
                {
                    if(num%i==0 && den%i==0)
                    {
                        num=num/i;
                        den=den/i;
                     }
                    else
                    {
                        break;
                    }
                }
                i=i+2;
            }
        }

         ...

         return 0;

}

Outra duvida que eu tive foi como receber a fração e separa os números para trabalhar com eles, eu criei 9 variaveis iniciais sendo 6 int é 3 char para separa os caracteres dos números:

int main()

{

     int a, b, c, d, num, den;
    char x, y, z;
    scanf("%d %c %d %c %d %c %d",&a,&x,&b,&y,&c,&z,&d);
    //printf("%d %c %d %c %d %c %d ",a,x,b,y,c,z,d);

    ...

    return 0;

}  

E o resto e matemática básica de frações 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@M3onique Olá,

Para evitar a utilização da função scanf(), poderia ser assim:

/*
GOSTARIA QUE ME AJUDASSEM NO SEGUINTE PROBLEMA:

Escreva um programa que calcule a soma de duas frações, fornecendo o resultado
em forma de fração, seu programa deve verificar se as frações são válidas.

FORMATO DE ENTRADA:Consiste de quatro números inteiros da forma a/b + c/d

EXEMPLO: 12/5 + 8/7

FORMATO DE SAIDA:Consiste de uma fração seguida por um fim de linha.

Deve imprimr ``entrada invalida!´´ caso uma das frações tenha denominador 0.obs:Imprimir sem as aspas.
*/
#include <stdio.h>
#include <stdlib.h>

int test(int i);

int
main() {
	char buff[4][56];
	
	int x[2], y[2], r;
	
	for(size_t k = 0; k < 4; k++)
	{
		printf("\n%ld) Valor: ", (k+1));
		fgets(buff[k], sizeof(buff[k]), stdin);
		
		if (k == 0)
		{
			x[0] = atoi(buff[k]);
			r = test(x[0]);
		}
		else if (k == 1)
		{
			x[1] = atoi(buff[k]);
			r = test(x[1]);
		}
		else if (k == 2)
		{
			y[0] = atoi(buff[k]);
			r = test(y[0]);
		}
		else if (k == 3)
		{
			y[1] = atoi(buff[k]);
			r = test(y[1]);
		}

		if(r != 0)
			k--;
	}
	
	printf("%d/%d\n", (x[0] + y[0]), (y[1] + x[1]));
	return 0;
}

int
test(int i)
{
	if (i == 0) 
	{
		printf("entrada invalida!\n");
		return -1;
	}
	return 0;
}

 

Fica até mais limpo o código, utilizando apenas um loop for().

 

Espero ter lhe ajudado em algo, até mais!

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!