elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14
111  Programación / Ejercicios / Ejercicios Recursivos en Java y sus Soluciones en: 11 Octubre 2008, 03:19 am
Planteamiento del Ejercicio acompañado del algoritmo de resolución en Java

Planteamiento:

Ejercicio 1. Programar un algoritmo recursivo que calcule el factorial de un número.

Solución:

Código
  1.    int factorial(int n){
  2.      if(n==0) return 1;   //AXIOMA
  3.      else return n*factorial(n-1);  //FORMULA RECURSIVA
  4.   }  



Planteamiento:

Ejercicio 2. Programar un algoritmo recursivo que calcule un número de la serie fibonacci.

Solución:

Código
  1.    int fibonaci(int n){
  2.      if(n==1 || n==2) return 1;
  3.      else return fibonaci(n-1)+fibonaci(n-2);
  4.    }  



Planteamiento:

Ejercicio 3. Programar un algoritmo recursivo que permita hacer la división por restas sucesivas.

Solución:

Código
  1.    int division (int a, int b)
  2.    {
  3. if(b > a) return 0;
  4. else
  5.    return division(a-b, b) + 1;
  6.    }
  7.  



Planteamiento:

Ejercicio 4. Programar un algoritmo recursivo que permita invertir un número. Ejemplo: Entrada: 123 Salida: 321

Solución:

Código
  1.     int invertir (int n)
  2.    {
  3. if (n < 10)         //caso base
  4.    return n;
  5. else
  6.    return (n % 10) + invertir (n / 10) * 10;
  7.    }



Planteamiento:

Ejercicio 5. Programar un algoritmo recursivo que permita sumar los dígitos de un número. Ejemplo: Entrada: 123 Resultado:6

Solución:

Código
  1.     int sumar_dig (int n)
  2.    {
  3. if (n == 0)      //caso base
  4.    return n;
  5. else
  6.    return sumar_dig (n / 10) + (n % 10);
  7.    }



Planteamiento:

Ejercicio 6. Programar un algoritmo recursivo que permita hacer una multiplicación, utilizando el método Ruso. Para mas informacion: aqui.

Solución:

Código
  1.     int mult_rusa(int A, int B)
  2.    {
  3.        if(A==1){
  4.    return (B);
  5. }
  6. if(A%2!=0){
  7. return(B+mult_rusa( A/2 , B*2));
  8. }
  9. else{
  10. return(mult_rusa( A/2 , B*2));
  11. }                                
  12.    }



Planteamiento:

Ejercicio 7. Programar un algoritmo recursivo que permita sumar los elementos de un vector.

Solución:

Código
  1.     int suma_vec(int v [], int n)
  2.    {
  3. if (n == 0)
  4.    return v [n];
  5. else
  6.    return suma_vec(v, n - 1) + v [n];
  7.    }



Planteamiento:

Ejercicio 8. Programar un algoritmo recursivo que permita multiplicar los elementos de un vector.

Solución:

Código
  1.     int multiplicar (int vec [], int tam)
  2.    {
  3. if (tam == 0)
  4.    return (vec [0]);
  5. return (vec [tam] * multiplicar (vec, tam - 1));
  6.    }



Planteamiento:

Ejercicio 9. Programar un algoritmo recursivo que calcule el Maximo comun divisor de dos números.

Solución:

Código
  1.    int sacar_mcd(int a, int b) {
  2.        if(b==0)
  3.            return a;
  4.        else
  5.            return sacar_mcd(b, a % b);
  6.    }
  7.  



Planteamiento:

Ejercicio 10. Programar un algoritmo recursivo que determine si un número es positivo.

Solución:

Código
  1.   public boolean positivo(int n){
  2.     if(n>0) return true;
  3.     else return negativo(n);
  4.    }
  5.  
  6.    public boolean negativo(int n){
  7.     if(n<0) return false;
  8.     else return  positivo(n);
  9.    }



Planteamiento:

Ejercicio 11. Programar un algoritmo recursivo que determine si un número es impar utilizando recursividad cruzada.

Solución:

Código
  1.        public boolean par(int n){
  2. if(n==0) return true;
  3. else return impar(n-1);
  4. }
  5.  
  6. public boolean impar(int n){
  7. if(n==0) return false;
  8. else return par(n-1);
  9. }



Planteamiento:

Ejercicio 12. Programar un algoritmo recursivo que permita sumar los elementos de una matriz.

Solución:

Código
  1.     int suma (int fila, int col, int orden, int mat [] [])
  2.    {
  3. if (fila == 0 && col == 0)
  4.    return mat [0] [0];
  5. else
  6.    if (col < 0)
  7. return suma (fila - 1, orden, orden, mat);
  8.    else
  9. return mat [fila] [col] + suma (fila, col - 1, orden, mat);
  10.    }



Planteamiento:

Ejercicio 13. Programar un algoritmo recursivo que permita resolver el cuadro latino. Ejemplo de cuadro latino:

0 0 0 0 1
0 0 0 1 2
0 0 1 2 3
0 1 2 3 4
1 2 3 4 5


Solución:

Código
  1.     latino (int fila, int col, int cont, int orden, int mat [] [])
  2.    {
  3. if (fila == 0 && col == 0)
  4.    mat [0] [0] = 1;
  5. else
  6.    if (fila == col)
  7. latino (fila - 1, orden - 1, orden, orden, mat);
  8.    else
  9.    {
  10. mat [fila] [col] = cont;
  11. latino (fila, col - 1, orden + 1, orden, mat);
  12.    }
  13.    }



Planteamiento:

Ejercicio 14. Programar un algoritmo recursivo que permita resolver la siguiente matriz:

1 1 1 1 1
1 2 2 2 2
1 2 4 4 4
1 2 4 8 8
1 2 4 8 16


Solución: Solucionado por: AmeRiK@nO

Código
  1. public class MatrizRecursividad {
  2.  
  3. private static int a=0, aux=1, b=0; //Declaramos los datos necesarios
  4. private static int[][] matriz = new int[6][6]; //La matriz debe ser cuadrada
  5.  
  6. public static void main(String[] args) {
  7.  
  8. llenarMatriz(matriz, a, b); //Iniciamos el llamado recursivo
  9. imprimir(); //imprimimos la matriz
  10.  
  11. }
  12.  
  13. public static void llenarMatriz(int matriz[][], int i, int j){
  14.  
  15. if(j > matriz.length -1){ //Si llegó a la ultima coluna, reseteamos los datos para la siguiente
  16. i++;
  17. j=0;
  18. aux++;
  19. }
  20. if(i <matriz.length){ // compara que no hallamos llegado al final
  21.  
  22. if(i==(aux-1) && j >= (aux-1)){ //comprueba que estemos en el lugar adecuado, es decir ira imprimiento escaladamente
  23. if(i==0)// si es la primera fila ingresamos aux=1
  24. matriz[i][j] = matriz[i][j]=aux;
  25. else
  26. matriz[i][j] = matriz[i][i-1]*2;//ingresamos el valor correspondiente al ultimo de la "escala" *2
  27. llenarMatriz(matriz, i , j+1);
  28. }
  29. else{ //si no, asignamos los valores anteriores de la escala
  30. if(j==0)// comprobamos si es el primer digito a ingresar
  31. matriz[i][j] = j+1;
  32. else
  33. matriz[i][j] = matriz[i-1][j];// asignamos el mismo numero de la fila anterior (i-1)
  34. llenarMatriz(matriz, i, j+1);
  35. }
  36. }
  37. }
  38.  
  39. public static void imprimir(){ //este metodo nos imprime la matriz por consola
  40.  
  41. for(int i=0; i< matriz.length; i++){
  42. for(int j=0; j< matriz.length; j++){
  43. System.out.print(matriz[i][j] + " ");
  44. }
  45. System.out.print("\n");
  46. }
  47. }
  48.  
  49. }



Planteamiento:

Ejercicio 15. Programar un algoritmo recursivo que ejecute la matriz del cubo mágico.

Solución:

Código
  1.    void magico(int mat [] [], int fil, int colmedio, int c, int n)
  2.    {
  3. if (c == n * n)
  4. {
  5.    mat [n-1] [colmedio] = c;
  6. }
  7. else
  8. {
  9.    if (fil < 0 && colmedio == n)
  10.    {
  11. magico(mat, fil + 2, n - 1, c, n);
  12.    }
  13.    else
  14.    {
  15. if (fil < 0)
  16. {
  17.    magico(mat, n - 1, colmedio, c, n);
  18. }
  19. else
  20. {
  21.    if (colmedio == n)
  22.    {
  23. magico(mat, fil, 0, c, n);
  24.    }
  25.    else
  26.    {
  27. if (mat [fil] [colmedio] == 0)
  28. {
  29.    mat [fil] [colmedio] = c;
  30.    magico(mat, fil - 1, colmedio + 1, c + 1, n);
  31. }
  32. else
  33. {
  34.    magico(mat, fil + 2, colmedio - 1, c, n);
  35. }
  36.    }
  37. }
  38.    }
  39.  
  40. }
  41.    }



Planteamiento:

Ejercicio 16. Programar un algoritmo recursivo que muestre el numero menor de un vector.

Solución:

Código
  1.        int menorvec (int x [], int n, int menor) {
  2.        if (n == 0)
  3.            if (menor > x [n]) return x [0];
  4.            else return menor;
  5.        else
  6.            if (menor > x [n]) return menorvec (x, n - 1, x [n]);
  7.            else return menorvec (x, n - 1, menor); }



Planteamiento:

Ejercicio 17. Programar un algoritmo recursivo que muestre el numero mayor de un vector.

Solución:

Código
  1.        int mayor (int numeros [], int posicion) {
  2.        int aux;
  3.        if (posicion == 0) return numeros [posicion];
  4.        else {
  5.            aux = mayor (numeros, posicion - 1);
  6.            if (numeros [posicion] > aux) return numeros [posicion];
  7.            else return mayor (numeros, posicion - 1);
  8.         }    
  9.        }



Citar
Recursividad

1.1. Introducción.

El concepto de recursividad va ligado al de repetición. Son recursivos aquellos algoritmos que, estando encapsulados dentro de una función, son llamados desde ella misma una y otra vez, en contraposición a los algoritmos iterativos, que hacen uso de bucles while, do-while, for, etc.

1.2. Definición.

Algo es recursivo si se define en términos de sí mismo (cuando para definirse hace mención a sí mismo). Para que una definición recursiva sea válida, la referencia a sí misma debe ser relativamente más sencilla que el caso considerado.
1.3. Elementos de la Recursión

1.3. 1. Axioma

Es un caso donde el problema puede resolverse sin tener que hacer uso de una nueva llamada a sí mismo. Evita la continuación indefinida de las partes recursivas.

1.3.2. Formula recursiva

Relaciona el resultado del algoritmo con resultados de casos más simples. Se hacen nuevas llamadas a la función, pero están más próximas al caso base.
Por ejemplo: El factorial de un número

factorial(0)   ->  1
factorial(1)   ->  1*factorial(0)
factorial(2)   ->  2*factorial(1)
factorial(3)   ->  3*factorial (2)
…               ->  …
factorial(N)   ->  3*factorial (N-1)

En la resolución de algoritmos recursivos es imprescindible encontrar estos dos elementos.

1.4. Tipos de recursión

1.4.1. Recursividad simple

Aquella en cuya definición sólo aparece una llamada recursiva. Se puede transformar con facilidad en algoritmos iterativos.

1.4.2. Recursividad múltiple
Se da cuando hay más de una llamada a sí misma dentro del cuerpo de la función, resultando más difícil de hacer de forma iterativa. Un ejemplo típico es la función de fibonacci
 
1.4.3. Recursividad anidada
En algunos de los argumentos de la llamada recursiva hay una nueva llamada a sí misma. La función de Ackermann se define por recursividad como sigue:

1.4.4. Recursividad cruzada o indirecta
Son algoritmos donde una función provoca una llamada a sí misma de forma indirecta, a través de otras funciones.

OHK
112  Foros Generales / Sugerencias y dudas sobre el Foro / Enlace roto hwagm en: 4 Octubre 2008, 15:43 pm
Hola, no estoy seguro de a quien reportar esto asi que por eso lo hago aqui.

http://hwagm.elhacker.net/aircrack-ng.htm

Descargar el Aircrack-ng 1.0-beta para windows 

-->

Citar
Not Found

The requested URL /aircrack-ng-1.0-beta1-win.zip was not found on this server.

El enlace a esa descarga no se encuentra, esta es una notificación, no se molesten conmigo  ;)

Un saludo
OHK
113  Programación / Ejercicios / Encriptacion basica con matrices en: 24 Septiembre 2008, 23:54 pm
=========================================
== Encriptacion basica con matrices y una palabra clave==
=========================================


Realizar un programa en Java que resuelva una encriptacion basica utilizando matrices, el mismo deberá poder descifrar los datos.

La encriptacion debera ser de la siguiente forma:

Utilizar una palabra clave: clave
Texto a cifrar:             Hola mundo

Primer paso:

Generar una matriz, que contenga la palabra clave, luego de ello debera llenarse las filas con el texto a cifrar.

    c   l   a   v   e

    h   o   l   a

   m   u   n   d   o

Como pueden ver, queda un espacio vacio, este debe permanecer asi.
Paso 2:

Ordenar alfabeticamente la palabra clave, que en nuestro caso es "clave"
Y a su ves, debemos mover las columnas que estan debajo de la palabra clave, como se ve en la matriz.

   a   c   e   l   v
   l    h       o   a
   n   m  o  u   d

Paso 3:

La matriz debera voltearse, las filas deberan ser columnas, como en el siguiente ejemplo:

   a   l    n
   c    h    m
   e         o
   l    o    u
   v    a    d

Y nuestro resultado seria:
   ln hm  o ou ad

Y para la desencriptacion, debera usarse la palabra clave:
acelv que en un principio se era "clave"

Un saludo

Espero sus respuestas.

OHK
114  Media / Juegos y Consolas / Cs 1.6 stream a Cs 1.6 NO stream en: 19 Septiembre 2008, 18:08 pm
Hola foro :D

Me gustaria saber como puedo cambiar mi Counter Strike 1.6 Stream a Counter Strike 1.6 NO stream.

Bueno, la verdad no le entiendo muy bien que son, o simplemente son lo mismo y yo estoy armando algo de nada... o es que a algunos se les olvida poner el NO cuando comprimen los ejecutables...

O es que si son diferentes...
Si es que lo fueran, hay algun metodo?

O es que me tengo que buscar el No stream por separado.

Un saludo
OHK
115  Media / Juegos y Consolas / Transportar Deck en: 17 Septiembre 2008, 23:40 pm
Hola foro :D

Bueno, espero que haya gente que sepa de este juego :P
Como puedo llevar el deck (osea mis cartas) de joey the pasion (yu-gi-oh) de un computador a otro, cual es el archivo que lo contiene ?
O debo hacer algun artificio para llevarmelo?

De antemano muchas gracias
Un saludo

OHK
116  Programación / Ejercicios / Problema recursivo en: 8 Septiembre 2008, 17:45 pm
Hola :D

Continuando un poco con los ejercicios recursivos, aquí les dejo otro.  :P

Hacer un Algoritmo Recursivo en Java que calcule la multiplicación de dos números utilizando la multiplicación por el método Ruso, también llamado  Multiplicación por Duplicación.

Para mas información sobre el método Ruso, aqui:

Espero sus respuestas.
Un saludo

OHK

117  Foros Generales / Sugerencias y dudas sobre el Foro / Propuesta: reabrir post de Pedidos en: 7 Septiembre 2008, 04:01 am
Hola foro :D

Tomando en cuenta los últimos acontecimientos en el foro, como el cierre de pídanme juegos, pídanme software eh incluso el fichaje al hilo de descarga directa de software, por la ilegalidad del asunto, propongo lo siguiente: (Espero no lo hayan propuesto antes)

Pues recordales que el funcionamiento de estos hilos mencionados eran: Hola me consigues este juego...

Hola, aqui esta tu juego
Código:
links, links, links
Desde mi punto de vista dar los links en el foro ah sido el punto principal por el cual se los han cerrado.

Ahora bien, mi propuesta es la siguiente:
Crear un post (de preferencia en el Foro de Dudas Generales(aunque eso no depende de mi)) el cual trate de pedidos de todo tipo, software, musica, juegos y etc...

El mismo que tendrá la siguiente regla, preguntas puntuales, nada de post de agradecimientos y las respuestas serían directivas de busqueda en el google.

ejemplo:

Pregunta. Hola me pueden conseguir el album de Panda?
Respuesta. Hola, aqui la directiva:
Código:
"panda" -html -asp -php -htm (rar|torrent)

Solo es un ejemplo.
Desde mi punto de vista, responder de esa forma ayuda al usuario y no mete en problemas legales al foro, pero claro ese es mi punto de vista.

Espero haber explicado bien mi idea.
Que dicen...

Un saludo

OHK
118  Media / Diseño Gráfico / Pregunta, espero no les moleste en: 7 Septiembre 2008, 02:06 am
Hola :D

Tengo una duda y antes de postear me gustaría que me la aclaren.
Puedo poner un reto, así como los que ponen ustedes, pero excluirme como participante?

Me explico, por decir Reto a que hagan un Mural y el mejor tendrá bla bla bla, pero yo no voy a participar, simplemente voy a ser un veedor. Puedo?

Ojo, la pregunta no va solo a los Moderadores (con todo respeto) ya que no solo ellos participan.

Un saludo

OHK
119  Media / Juegos y Consolas / Spore: jugando a ser Dios en: 3 Septiembre 2008, 17:58 pm
El creador de "Los Sims" presenta un nuevo juego en el que el jugador tiene total libertad para diseñar sus propias criaturas y controlar su evolución.

Uno de los videojuegos más revolucionarios de los últimos años, creador de toda una secuela de juegos basados en el mismo planteamiento, ha sido “Los SIms”. En él, el jugador controlaba al detalle las actividades de las criaturas cibernéticas, convirtiéndose en una especie de ojo todopoderoso que controlaba su vida virtual.

Ahora, el creador de “Los SIms” Will Wright, ha ido un paso más allá con “Spore”, en el que el jugador tiene todavía mayor libertad para crear y decidir el destino de las criaturas ideadas por él.

El juego sigue todos los pasos de la evolución: unas esporas se convierten en células, que desde su origen acuático evolucionan hacia una especie sensible. Después, se van generando organismos cada vez más complejos durante otras cuatro fases, como criaturas, tribus, civilizaciones y viajes espaciales, con distintos desafíos y metas en cada fase.

Aunque se trata de un juego para un único jugador, se pueden compartir las creaciones con las de otros jugadores, aumentando así el número de mundos para explorar. También pueden tomarse prestados otros seres para que formen parte del universo de cada jugador.

Video

Según ha desvelado Will Wright durante la presentación del juego en España, hay ya más de 3 millones de criaturas, una cifra que avala el éxito del juego, número uno en todos los ránkings de popularidad desde que estuviera disponible en Internet la primera demo del juego.

Wirght destacó la posibilidad de que los jugadores puedan "reconstruir su propia historia y ser creativos de una manera sencilla y también divertida". Según él, "con 20 clics podemos darle una capacidad creativa a los jugadores que antes sólo estaba al alcance de los diseñadores profesionales".

El juego se puede descargar desde la web de Electronic Arts, al precio de 56,95 euros. Sin duda hará, las delicias tanto de creacionistas como de darwinistas, pues los primeros podrán diseñar criaturas a su antojo, mientra que los segundos serán testigo de los avatares de su evolución como especie.

Fuente:
http://www.baquia.com/noticias.php?id=14082
120  Programación / Ejercicios / De forma recursiva en: 2 Septiembre 2008, 23:45 pm
Hola foro :D

Aquí dos ejercicios.

1ro. Realizar un programa en Java que de forma recursiva verifique si un número es positivo. El método debe ser booleano, osea devolver true o false, dependiendo del número introducido.

2do. Realizar un programa en Java que de forma recursiva sume 2 números naturales.

Sencillo cierto?
Espero sus respuestas.

Un saludo
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines