Ir ao conteúdo
  • Cadastre-se

ajuda codigo C para MDC


GJRMachado

Posts recomendados

Outra vez eu incomodando aqui xD

eu fiz o codigo mas nao ta funcionando

#include <stdio.h>

int MDC(int y, int x)
{
if (y == 0)
{
return (x);
}
else
{
return MDC(y,x%y);
}
}

int main()
{
printf("%d\n",MDC(5, 15));
printf("%d\n",MDC(3, 9));
printf("%d\n",MDC(31, 73));
getchar();
}

a ordem do exercicio e essa:

Crie a função int MDC(int x, int y) que calcule, recursivamente, o máximo divisor comum de x e y

desde Já agradeço!!!!!

Link para o comentário
Compartilhar em outros sites

Você pode tentar pelo processo de divisões...

Exemplo:

Nesse processo efetuamos várias divisões até chegar a uma divisão exata. O divisor desta divisão é o m.d.c. Acompanhe o cálculo do m.d.c.(48,30).

Regra prática:

1º) dividimos o número maior pelo número menor;

48 / 30 = 1 (com resto 18)

2º) dividimos o divisor 30, que é divisor da divisão anterior, por 18, que é o resto da divisão anterior, e assim sucessivamente;

30 / 18 = 1 (com resto 12)

18 / 12 = 1 (com resto 6)

12 / 6 = 2 (com resto zero - divisão exata)

3º) O divisor da divisão exata é 6. Então m.d.c.(48,30) = 6.

Fiz aqui, não é difícil.

Link para o comentário
Compartilhar em outros sites

Eu fiz assim agora xD

mas o que ta complicando e a parte do "int main ()" que eu nao to conseguindo imprimir com o "printf" se você poder postar o jeito que você fez pra eu dar uma olhada ajudaria xD

int MDC(int y, int x)
{
if (y == 0)
{
return (0);
}
else
{
return (MDC(y, x%y));
}
}

eu consegui fazer essa parte com base em uma definiçao que eu achei no wikipedia

11a35174ff0022b97e39114f5f57e1fc.png

function gcd is:
input: integer x, integer y such that x >= y and y >= 0

1. if y is 0, return x
2. otherwise, return [ gcd( y, (remainder of x/y) ) ]

end gcd

gcd(27, 9)   = gcd(9, 27 % 9)
= gcd(9, 0)
= 9

Link para o comentário
Compartilhar em outros sites

mas o que ta complicando e a parte do "int main ()" que eu nao to conseguindo imprimir com o "printf" se você poder postar o jeito que você fez pra eu dar uma olhada ajudaria xD

A função retorna um inteiro... basta dar o printf com %d...

-Primeira coisa a se fazer é conferir se um dos dois números digitados é zero. Se for, pede para digitar outros;

-Caso queira fazer a partir do método de divisões sucessivas, terá de saber qual dos dois números é maior;

-A função deve receber os dois números e devolver o MDC (que é inteiro);

O método de divisões sucessivas consiste em, inicialmente, dividir o maior dos dois números pelo menor. Se a divisão não tiver resto, o MDC é o divisor. Se tiver, deve-se dividir o divisor por este resto.

Siga este processo: divida o divisor da divisão anterior pelo resto da mesma. Faça isto até o resto ser zero. Quando o for, o divisor será o MDC.

Se não conseguir...


#include <stdlib.h>

int mdc(int maior, int B){

if(maior%B)
mdc(b, maior%B);
else
return(B);
}


int main(){
int a, b;

do{
printf("Digite o primeiro valor: ");
scanf("%d", &a);
printf("Digite o segundo valor: ");
scanf("%d", &B);

if(!a || !B)
printf("\nDigite numeros diferentes de zero.\n");

} while(!a || !B);

if(a<B)
a += b, b = a-b, a -= b;

printf("O MDC e %d.\n", mdc(a, B));

system("pause");
return(0);
}
#include <stdio.h>

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!