Ver Mensaje Individual
  #8 (permalink)  
Antiguo 04/05/2013, 17:14
fenixelian
 
Fecha de Ingreso: mayo-2013
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Respuesta: problema al crear funcion

hola. como te va. agradesco mucho tu ayuda con lo de la funcion. averiguando un poco mas, encontre un metodo para sacar MCD de 2 numeros que no conocía. consiste en agarrar 2 numeros (x, y) luego se calcula x%y y se lo coloca en el lugar de la x, y en el lugar de la "y" se pone x. ocea quedaría (y%x, x) y asi sucesivamente. en algun momento el lugar de la x, ocea el primer lugar de los 2 valores va a ser 0 y nuestro MCD va a ser y. de esta manera se puede hacer una funcion muy simple que calcule esto. otra cosa muy interesante que no conocia de este lenguaje es que se pueden hacer definicioes recursivas al igual que en lenguajes funcionales. y de esta manera logre el objetivo =). en la facultad, para ver que un programa funciona correctamente, en un principio se hace un ejemplo paso a paso para ver que de el resultado deseado, y si no lo da, ver en que momento falla. tambien para ver que ande para cualquier caso se hace una prueba por induccion pero voy a hacer lo primero. un ejemplo de lo que digo es el siguiente:

x=15, y=35, f= el nombre de una funcion que se aplica a (x,y)
luego
f(15,35)
f(35%15, 15)
f(5,15)
f(15%5, 5)
f(0, 5)
luego como x=0 el MDC es 5

y el codigo de la funcion seria algo asi

public static int MCD(int x, int y)
{
int resultado;
if (x == 0) resultado = y;
else resultado = MCD(y % x, x);//definicion recursiva
return resultado;
}

Igualmente me sirvio muchisimo tu ayuda para crear la otra funcion, aunque no la pude aplicar me sirvio mucho para recordar muchas cosas. gracias


Código C#:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace ComparadorAyB
  6. {
  7.     class Program
  8.     {
  9.         public static int MCD(int x, int y)
  10.         {
  11.             int resultado;
  12.             if (x == 0) resultado = y;
  13.             else resultado = MCD(y % x, x);//definicion recursiva
  14.             return resultado;
  15.         }
  16.         static void Main(string[] args)
  17.         {
  18.             int a, b;
  19.             string valor;
  20.             Console.WriteLine("Introduce primer numero: ");
  21.             valor =Console.ReadLine();
  22.             a = Convert.ToInt32(valor);
  23.             Console.WriteLine("Introduce segundo numero: ");
  24.             valor = Console.ReadLine();
  25.             b = Convert.ToInt32(valor);
  26.             Console.WriteLine("MCD: {0}", MCD(a, b));
  27.  
  28.             Console.ReadLine();
  29.         }
  30.     }
  31. }