Pascal/Turbo Pascal - auxilio tengo un problema

 
Vista:

auxilio tengo un problema

Publicado por katherine (4 intervenciones) el 14/03/2008 14:54:26
como le hago??

si se desea que el usuario digite un numero positivo cualquiera y seguidamente este le devuelve el maximo común divisor de ambos numeros??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:auxilio tengo un problema

Publicado por Willy De León (177 intervenciones) el 16/03/2008 02:46:27
Hola Katherine.
Entiendo que quieres saber cómo se hace un programa para encontrar el máximo común divisor de dos números.

Te he diseñado un pequeño programa y te lo adjunto en el final de esta nota.

Encontré en una página la manera como se haría normalmente en una hoja de papel. Héchale un vistaso:

http://lubrin.org/mat/spip.php?article718

Como podrás darte cuenta, sería muy complicado hacer un programa que encuentre el M.C.D con este método.

Yo pienso que es más fácil hacerlo mentalmente si comprendes realmente lo que es esto.

En la página mencionada, ponen un ejemplo con los números: 24, 36 y 40.
El Máximo Común Divisor es 4. ¿Poqué?

Un divisor común podría ser el 2 porque los tres números se pueden dividir dentro de 2. Un divisor común pero mayor puede ser el 4, pues los tres números se pueden dividir dentro de 4:

24/4 = 6, 36/4 = 9, 40/4 = 10.

Ya no hay un número más grande que el cuatro por el que se puedan dividir los tres números, poreso 4 es el máximo común divisor. ¿Ves qué fácil?

Esto lo puedes hacer sin escribir un sólo número.

Bien. Pues pensado de esa forma es como hice el siguiente código:
-----------------------------------------------------------------------------------------------
Program EncuentraMCD; (* Maximo Comun Divisor *)
Uses Crt;
Var PrimerNumero, SegundoNumero,
NumeroMenor, NumeroMayor, BuscaMCD, MCD : Integer;

Begin
ClrScr;
Repeat
Writeln('Ingrese el primer numero: Para salir ahora Ingrese 0');
ReadLn(PrimerNumero);
If PrimerNumero <> 0 then
Begin
Writeln('Ahora ingrese el segundo numero: ');
ReadLn(SegundoNumero);

If PrimerNumero < SegundoNumero then
Begin
NumeroMenor := PrimerNumero;
NumeroMayor := SegundoNumero
End else
Begin
NumeroMenor := SegundoNumero;
NumeroMayor := PrimerNumero;
End;

For BuscaMCD := 1 to NumeroMenor do
If (NumeroMenor mod BuscaMCD = 0) and (NumeroMayor mod BuscaMCD = 0) then
MCD := BuscaMCD;

WriteLn('El maximo comun divosor es: ', MCD); Writeln; Writeln;
End;

Until PrimerNumero = 0;
End.
----------------------------------------------------------------------------------------------------
La parte de "If PrimerNumero <> 0 then Begin" está solo para que el programa se repita hasta que el usuario presione un 0 para salir.

Los siguientes if son para determinar cuál es el número menor de los dos que ingresó el usuario. El MCD no puede ser mayor que el numero menor.

El operador mod, dá el residuo de la división entre los dos números. Si el residuo es 0, significa que sí se puede dividir un número dentro del otro y no sobra nada(El resultado no tiene decimales).

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:auxilio tengo un problema

Publicado por miguel angel (1 intervención) el 07/04/2008 02:17:12
cada vez que hago un programa me sale erro begin y se supone que es inicio por ende los preograma no se compilan
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

auxilio tengo un problema

Publicado por garibay (1 intervención) el 18/05/2008 23:46:40
hola me mandaron a realizar un programa que pregunte el nombre y la nota de 10 alumnos y me diga cual es la nota mayor y cual es la menor.

me prodrias dar la formula para doder determinar cual es la mayor y la menor nota gracias.

espero tu respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar