30-10-2009, 20:10
Voltei de novo! Mas agora já tenho umas linhas escritas
O problema que tenho esta semana é o do MDC e do mmc:
Escreva um programa que calcule o Máximo Divisor Comum (MDC) e o mínimo múltiplo comum (mmc) de dois número inteiros.
O programa deve ter duas funções, em que em ambas, recebem dois inteiros positivos e retornam o MDC e o mmc respectivamente.
O calculo do MDC deve ser feito de forma iterativa e o calculo do mmc deve recorrer à função MDC.
Eis o que já fiz:
main.c
=======================================================
prat4.c
=======================================================
prat4.h
=======================================================
Já corri o programa e passei pelo debug. Quando salta para a função deixa de correr ou de apresentar dados, não me devolve nada.
O que será que tenho mal, ou por outro lado, o que é que não está mal
Já agora, se alguém tiver uma explicação muito simplesinha sobre o que é uma iteração... é que é suposto serem duas funções e eu não consigo achar forma diferente de calcular o MDC.
Desde já o meu muito obrigado.
O problema que tenho esta semana é o do MDC e do mmc:
Escreva um programa que calcule o Máximo Divisor Comum (MDC) e o mínimo múltiplo comum (mmc) de dois número inteiros.
O programa deve ter duas funções, em que em ambas, recebem dois inteiros positivos e retornam o MDC e o mmc respectivamente.
O calculo do MDC deve ser feito de forma iterativa e o calculo do mmc deve recorrer à função MDC.
Eis o que já fiz:
main.c
Código:
#include "prat4.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int a, b, t;
int res_mmc, res_MDC;
printf("Introduza o primeiro numero inteiro: ");
scanf("%d", &a);
printf("Introduza o segundo numero inteiro: ");
scanf("%d", &b);
if ( a < b )/* Garantir que A seja o maior valor */
{
t = a;
a = b;
b = t;
}
while ( b != 0 ) /* Calcular o MDC */
{
res_MDC = a % b;
a = b;
b = res_MDC;
}
mmcF(a, b, res_MDC, res_mmc);
if (res_MDC > 0 && res_mmc > 0)
printf("Aos numeros inteiros %d e %d correspondem:\n"
"MDC = %d \n"
"mmc = %d", a, b, res_MDC, res_mmc);
else
printf("Parece que nao sabes o que sao numeros inteiros!");
return 0;
}
=======================================================
prat4.c
Código:
#include "prat4.h"
#include <stdio.h>
#include <stdlib.h>
int mmcF(int a, int b, int res_MDC, int res_mmc)
{
res_mmc = (a*b)/res_MDC;
return res_mmc;
}
=======================================================
prat4.h
Código:
#ifndef PRAT4_H_
#define PRAT4_H_
#include <stdio.h>
#include <stdlib.h>
int mmcF(int a, int b, int res_MDC, int res_mmc);
#endif /* PRAT4_H_ */
=======================================================
Já corri o programa e passei pelo debug. Quando salta para a função deixa de correr ou de apresentar dados, não me devolve nada.
O que será que tenho mal, ou por outro lado, o que é que não está mal
Já agora, se alguém tiver uma explicação muito simplesinha sobre o que é uma iteração... é que é suposto serem duas funções e eu não consigo achar forma diferente de calcular o MDC.
Desde já o meu muito obrigado.