Problemas de Programación I

January 12th, 2009 by AlbertEin Leave a reply »

Aunque pocas personas leen este blog, y mas pocas aun saben de programación voy a experimentar poner pequeños problemas de programación para que los resuelvan en los comentarios y así ganen la infame gloria en el dulce cáliz de la victoria.

Las respuestas pueden ser en cualquier lenguaje o pseudocodigo a excepción de los casos donde se indiquen, tratare de empezar con problemas sencillos y tal ves aumentar la dificultad en el futuro. Algunos problemas incluso podrían ser resueltos por personas que no sepan programar si describen los procesos paso a paso en español.

Los problemas tendrán dos características:

  1. Las respuestas requerirán de ingenio o pensar en otra forma de resolver problemas comunes
  2. En algunas ocasiones se requerirá que se preste especial atención en la formulación del problema, una palabra puede cambiar muchas cosas.

Sin mas por el momento les dejo los problemas iniciales:

  1. Define una función para multiplicación de dos números enteros mayores a cero sin utilizar el operador * (multiplicación)
  2. Define la función anterior sin utilizar ciclos dentro de la función (No for, while, do until, goto, etc.)
  3. Define una función similar a la anterior pero que realice divisiones (resultados enteros)
Advertisement

9 comments

  1. AlbertEin says:

    Si quieren usar código en los comentarios usen la siguiente sintaxis:

    <pre lang=”Lenguaje” line=”1″>
    Poner código aquí
    </pre>

    Donde lenguaje es el lenguaje que usaran, los lenguajes soportados están listados en:
    http://qbnz.com/highlighter/

    Por ejemplo:
    <pre lang=”Scheme” line=”1″>
    (define (add x y)
    (+ x y))
    </pre>

    produce:

    1
    2
    
     
  2. Fire_tony says:

    ¡weba!

    La solución del primero es con sumas y ciclos, claramente.
    Las demás necesitan más pensamiento…

  3. AlbertEin says:

    Hay una gran diferencia entre decir “a de ser así” y “se implementa así:”.

    Pinche webon de la UNAM xD

  4. Toyedpi says:

    tu primer problema le falta completar una palabra para plantearlo

    # Define una función para multiplicación de dos números diferentes enteros mayores a cero sin utilizar el operador * (multiplicación)

    si son dos numeros iguales, se define con el signo de ” ”

    el cual he visto que lo acepta el lenguaje BASIC

    tengo que escribir el pinche codigo fuente?

    XD mejor te pongo el algoritmo, despues de todo, yo no estudio nada que tenga que ver con programación

    es mas, especificaste que puedo poner el algoritmo… pero lo dijiste sin usar la palabra “algoritmo”…

    bueno, plantearé el problema uno con un algoritmo si me respondes si afecta o no que no indicaras que son enteros diferentes…

    y estamos hablando de computadoras, asi que NO ESTA SOBREENTENDIDO…

  5. Toyedpi says:

    post incompleto…

    si son dos numeros iguales, se define como “x^2″

    donde x es la variable cuyo valor es aquel de los dos numeros iguales

    bla bla bla

    define si son iguales o no y lo pongo completo ¬¬

  6. AlbertEin says:

    Dos números “cualquiera”, ya sea iguales o diferentes entre si.

  7. lopff says:

    “sin utilizar ciclos dentro de la función (No for, while, do until, goto, etc.)”

    lo primero que se me vino a la mente fue “recursividad”, aunque si tuve que refrescarme en este concepto, hace mucho que no lo usaba.

    el 1 y el 2

    1
    2
    3
    4
    5
    6
    7
    
    int multiplicar(int x,int y)
    {
    	if(y==1)
    		return x;
     
    	return x + multiplicar(x,y-1);
    }

    por falta de tiempo el 3 lo dejo pendiente, o que alguien mas lo haga =p

  8. AlbertEin says:

    Winna!!!

    Muy bien, lopff esta definiendo la multiplicación en base de una funcion recursiva definida como:

    x * y = x + x * (y – 1)
    x * 1 = x

    Y el que haya respondido la segunda pregunta nos revela la solución al primer problema:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    int multplicar (int x, int y)
    {
    	int results = 0;
     
    	while (y != 0)
    	{
    		results += x;
    		y--;
    	}
     
    	return results;
    }

    Gracias por participar lopff y aportar la solución a uno de los problemas.

  9. lopff says:

    cool!, a winner is me =)

    me gusta este blog =)

Leave a Reply