Está en la página 1de 17

ESTUCTURAS DE DATOS

ALONSO MONDRAGON MARCELO


Introducción a la estructura de datos:
Alumno:
Unidad 2 - Practica # 2
21560221
JOSUE REYES REBOLLEDO
19560309
Christian Iván Espinoza Gaytán
21560464
RUBEN LOBATON SALAMANCA
Carrera: Ingeniería en Sistemas
Computacionales.
Grupo: 32T 23/SEPTIEMBRE/2022

P á g i n a 1 | 17
Índice

Contenido
Índice............................................................................................................................................................................. 2
JAVA............................................................................................................................................................................. 3
Convertir un número decimal dado a binario...........................................................................................................3
Obtener la secuencia de Fibonacci en base a un número dado...........................................................................4
Calcular la factorial de cualquier número dado.......................................................................................................5
Solución de la Torre de Hanoi para un numero de discos dado...........................................................................5
MULTIPLICACION DE UN VECTOR DADO........................................................................................................................7
PYTHON....................................................................................................................................................................... 8
Convertir un numero decimal dado a binario...........................................................................................................8
Obtener la secuencia de Fibonacci en base a un numero dado...........................................................................9
Calcular la factorial de cualquier número dado.....................................................................................................10
Multiplicar los elementos de un vector dado..........................................................................................................11
C++.............................................................................................................................................................................. 12
1 Convertir un número decimal dado a binario.....................................................................................................12
2 Obtener la secuencia de Fibonacci en base a un número dado.....................................................................13
Ejercicio 3 Calcular la factorial de cualquier número dado..................................................................................14
Ejercicio 4 Multiplicar los elementos de un vector dado......................................................................................15
Ejercicio 5 Solución de la Torre de Hanói para un numero de discos dado......................................................16
CONCLUSIONES......................................................................................................................................................18

P á g i n a 2 | 17
JAVA

Convertir un número decimal dado a binario


package pro1; VALOR DE 125
import java.util.Scanner;
public class Pro1 {
/*
clase donde se define el metodo
de recursividad
creacion del metodo CON VALOR DE 8
creacion del metodo
int num lugar donde se hace el llamdado
del numero a convertir
*/
public int binario(int num) {
/*
agremos el metodo recursivo con las condiciones
si es mayor a dos se retorna el mismo numero multiplicado por 10
*/
if (num < 2) {
return num;
} else {
return num % 2 + binario(num / 2) * 10;
}
}

public static void main(String[] args) {


Pro1 leer = new Pro1();
/*
llamada de impresion de resultado de la conversion

P á g i n a 3 | 17
leer.binario(8) hace la funcion de
colocacion de un numero a convetir
*/
System.out.println("Numero convetido es: ");
System.out.println(leer.binario(125));
}}

Obtener la secuencia de Fibonacci en base a un número dado.


package Fibonacci;
public class Fibonacci {

public static void main(String args[]) {


/*Definmos las variables y funcion de tiempo
el cual mediremos en este programa*/
long t1, t2;
/* declaracion del valor que queremos hacer la suma,
depues del signo igual colocamos el valor que deseamos hacer
la operacion*/
int val =20;
/* Creamos los metodos de la funcion tiempo */
t1 = System.currentTimeMillis();
t2 = System.currentTimeMillis();
/* LLamamos a imprimir los valores del tiempo*/
System.out.println("Tiempo: " + (t2 - t1) + " milisegundos");
/*Mandamos a llamar el metodo recursivo y lo imprimimos */
System.out.println("Valor: " +val+" \n La suma de valores es : \n " +fibonacciR(val));
/*Se hace la impresion del tiempo que llevo el programa en hacer la operacion*/
System.out.println("Tiempo Transcurrido: " + (t2 - t1) + " milisegundos");
}
//Funcion Recursiva
public static int fibonacciR(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacciR(n - 1) + fibonacciR(n - 2);
}
}

}
Muestras de la impresión

P á g i n a 4 | 17
Calcular la factorial de cualquier número dado.

package Recursividadf;
class Recursividad {

public static void main(String[] args) {


//metodo de la clase factorial
Factorial leer = new Factorial();
//imporesion del resultado
//dentro del parentesis colocar el valor.
System.out.println("factorial es: " + leer.facR(3));

}
Valor de 3
}

public class Factorial {


// Esto es un método recursivo

int facR(int n) { Valor de 10


int resultado;
if (n == 1) {
return 1;
}
resultado = facR(n - 1) * n;
return resultado;
}
}

Solución de la Torre de Hanoi para un numero de discos dado.

package TORRE;
import java.util.Scanner;
public class torre {
static Scanner lee = new Scanner(System.in);
public static void main(String[] args) {
//declaracion de la variable
int torre;

P á g i n a 5 | 17
//pedimos al usuario que nos ingrese el numero
System.out.println("Valores: ");
torre = lee.nextInt();
//Nombre de los postes
barra(torre, 'X', 'Y', 'Z');
}//metodo recursivo
static int barra(
int n,
char inicio,
char destino,
char medio)
{
if (n <= 1) {
System.out.println("\n mover disco 1 del poste " + inicio + " al poste " + destino);
} else {
barra(n - 1, inicio, medio, destino);
System.out.println("\n mover disco " + n + " del poste " + inicio + "al poste " +
destino);
barra(n - 1, medio, destino, inicio);
System.out.println(" \n Fin de los procesos");
}
return 0;

}
}
Impresión de los pasos del valor dado

P á g i n a 6 | 17
MULTIPLICACION DE UN VECTOR DADO
package vector;

import java.util.Scanner;

public class Vector {

public static void main(String[] args) {


Scanner entrada = new Scanner(System.in);
int pos = 0;
//variable donde colocamos los valores a multiplicar
int Arreglo[] = {5 * 5};

System.out.println("Arreglo multiplicado es: " + Arreglo(Arreglo, pos));


}

//metodo recursivo
public static int Arreglo(int Arreglo[], int pos) {
if (pos == Arreglo.length - 1) {
return Arreglo[pos];
}
// Caso recursivo: incrementar índice en 1.
return Arreglo[pos] + Arreglo(Arreglo, pos + 1);
}

}
IMÁGENES DE CORRIDA DE PROGRAMA
Valor de 5*5 valor de 10*5

Programas Python- Christian Ivan Espinoza Gaytan

PYTHON

Convertir un numero decimal dado a binario


Código:

P á g i n a 7 | 17
def decimal_a_binario(decimal):
    if decimal <= 0:
        return "0"
    # Aquí almacenamos el resultado
    binario = ""
    # Mientras se pueda dividir...
    while decimal > 0:
        # Saber si es 1 o 0
        residuo = int(decimal % 2)
        # E ir dividiendo el decimal
        decimal = int(decimal / 2)
        # Ir agregando el número (1 o 0) a la izquierda del resultado
        binario = str(residuo) + binario
    return binario

decimal = int(input("Ingresa un número decimal: "))


binario = decimal_a_binario(decimal)
print(f"El número {decimal} es {binario} en binario")

Capturas:

Explicación:
Solicitamos un numero entero mayor a 0, y calculamos su valor en binario a
través de las diferentes operaciones empleadas

Obtener la secuencia de Fibonacci en base a un numero dado.


Código:
def fibonacci_iterativo(posicion, debe_imprimir):
    actual = 0
    siguiente = 1
    for x in range(posicion + 1):

P á g i n a 8 | 17
        if debe_imprimir:
            print(str(actual) + ",", end="")
        temporal = actual
        actual = siguiente
        siguiente = siguiente + temporal
    return temporal

def fibonacci_recursivo(posicion):
    if posicion < 2:
        return posicion
    return fibonacci_recursivo(posicion - 1) + fibonacci_recursivo(posicion - 2)

posicion = int(input("¿Hasta que numero quiere imprimir la secuencia?: "))


# Imprimir sin importar el resultado
print(f"Imprimiendo serie hasta posición {posicion}")
fibonacci_iterativo(posicion, True)
# Obtener valor pero no imprimir
valor = fibonacci_iterativo(posicion, False)
print(f"\nFibonacci de {posicion} con método iterativo es {valor}")
# Lo mismo de arriba pero con el método iterativo
valor = fibonacci_recursivo(posicion)
print(f"Fibonacci de {posicion} con método recursivo es {valor}")

Capturas:

Explicación:
Creamos un método recursivo para poder desarrollar la secuencia Fibonacci hasta
el numero al que se quiera llegar

Calcular la factorial de cualquier número dado.


Código:
def factorial(num):
    if num < 0:
        print("No existe el factorial en numeros negativos")

P á g i n a 9 | 17
    elif num == 0:
        return 1
    
    else:
        fact = 1
        while(num > 1):
            fact *= num
            num -= 1
        return fact

num = int(input("Ingrese el numero al cual se le calculara el factorial "))

print("El Factorial de",num,"es", factorial(num))

Capturas:

Explicación:
Declaramos una variable que será el numero al que le sacaremos el factorial y
después hacemos todas las operaciones necesarias para dar un resultado

Multiplicar los elementos de un vector dado.


Código:
import numpy
arr = numpy.array([1, 2, 3])
newarr = arr*3
print(newarr)

Capturas:

Explicación:
Utilizamos la librería Numpy para poder interactuar con el vector Arr y después lo
multiplicamos por el numero que queramos y usamos los resultados para crear este
vector

P á g i n a 10 | 17
1. Solución de la Torre de Hanoi para un numero de discos dado.
Código:
def TowerOfHanoi(n , source, destination, auxiliary):
    if n==1:
        print ("Mover disco 1 de",source,"al destino",destination)
        return
    TowerOfHanoi(n-1, source, auxiliary, destination)
    print ("Mover disco",n,"de",source,"al destino",destination)
    TowerOfHanoi(n-1, auxiliary, destination, source)
     
# Driver code
n=4
TowerOfHanoi(n,'A','B','C')

Capturas:

Explicación:
Usamos la lógica para resolver este problema al hacer que ninguna variable
pueda estar debajo de una más grande que ella misma

C++

1 Convertir un número decimal dado a binario

Código
#include<iostream>
using namespace std;
//funcion para saber el numero binairo
void binario(int n)

P á g i n a 11 | 17
{
if(n>1) binario(n/2);
cout<<n%2;
}
int main(){

int n;
do{
//funcion para ingresar el numero a trasformar
cout<<"\n ingrese el numero: ";
cin>>n;
if(n<0)
cout<<"\n Numero invalido: ";
}while(n<0);
//muestra los valores en decimal y binario
cout<<"\n Numero: "<<n;
cout<<"\n binario ";
binario(n);
return 0;
}
Resultados:

Explicación: primero pedimos un valor después pasa por el if y ese para ver si el valor
puede sacar binario (que no sea un numero decimal) después manda a llamar la función
binario que realiza el proceso y después imprime el número para sacar el factorial y
después el factorial de dicho numero

2 Obtener la secuencia de Fibonacci en base a un número dado


Código
#include<iostream>
using namespace std;
//funcion para la secuencia
int fib(int i){

P á g i n a 12 | 17
if(i==1 || i==2){
return 1;
}else{
return fib(i-1)+fib(i-2);
}
}
int main(){
//declaracion de variables
int n;
//pide el numero para calcular dicha secuencia
cout<<"digite el numero para calcular la secuencia: ";
cin>>n;
//calcula para la secuencia
for(int i=1;i<=n;i++){
cout<<fib(i)<<" ";
}
return 0;
}
Resultados

Explicación: primero se pide el numero pide el número después manda a llamar


la función fibo (Fibonacci) y hace el proceso para mandar a llamar el resultado e
imprimirlo

Ejercicio 3 Calcular la factorial de cualquier número dado


Código
#include<iostream>
#include<conio.h>
using namespace std;
//funcion del factorial
int factorial(int f){
if(f<2){
return 1;
}else{

P á g i n a 13 | 17
return f*factorial(f-1);
}
}
int main(){
//declaracion de variables
int f=0,r=0;
//pide numero para su respectivo factorial
cout<<"que factorial desea ver"<<endl;
cin>>f;
r=factorial(f);
//muestra el numero y su factoral
cout<<"el numero factorial de "<<f<<" es "<<r<<endl;
system("pause");
return 0;
}
Resultados

Explicacion: primero pide el valor para sacar el factorial, despues pasa por el if y else y
calcula el factorial , luego manda a llamar la funcion con el resultado y lo imprime

Ejercicio 4 Multiplicar los elementos de un vector dado


Código
#include<iostream>
#include<conio.h>
using namespace std;
//variables
void pedirdatos();
int calcularmul(int vec[],int);
int vec[100],tam;
//termina la declaracion de variables

P á g i n a 14 | 17
//muestra de los resultados
int main(){
pedirdatos();
cout<<"\n la multiplicacion de los elementos es: "<<calcularmul(vec,tam)<<endl;
getch();
return 0;
}
//terminacion de la muestra de los resultados

//funcion del vector


void pedirdatos(){
//pide el dato de lo largo del vector
cout<<"dijite el tamaño del vector: ";
cin>>tam;
//funcion para los numeros del vector
for(int i=0;i<tam;i++){
cout<<"dijite el numero";
cin>>vec[i];
}
}
int calcularmul(int vec[],int tam){
int mult=1;
for(int i=0;i<tam;i++){
mult=mult*vec[i];
}
return mult;
}
//terminacion de la funcion del vector
resultados

Explicacion: primero pide el tamaño del vector despues digita los elementos del vector
luego pasa por la funcion calcularmul para hacer el proceso y imprime el resultado

Ejercicio 5 Solución de la Torre de Hanói para un numero de discos dado


Código
#include <iostream>
using namespace std;
//funcion para los movimientos
static int hanoi(int n, char origen, char destino, char auxiliar) {
if(n<=1) {
cout<<"\nmover disco 1 del poste "<<origen<<" al poste "<<destino;
}else{

P á g i n a 15 | 17
hanoi(n - 1, origen, auxiliar, destino);
cout<<"\nmover disco "<<n<<" del poste "<<origen<<" al poste "<<destino;
hanoi(n - 1, auxiliar, destino,origen);

}
return 0;
}

int main(void)
//pide la cantidad de postes para realizar los movimientos
{
int valor;
cout<<"ingresa el numero de discos -> ";
cin>>valor;
hanoi(valor, 'A', 'C', 'B');
}
Resultado

Explicacion: primero pide el numero de discos despues manda a llamar a la funcion hanoi
para poder hacer los movimientos despues imprime la lista para poder realizar dichos
movimientos

P á g i n a 16 | 17
CONCLUSIONES

JOSUE REYES REBOLLEDO


 Java es un lenguaje de programación de alto nivel muy dinámico que permite desarrollar
aplicaciones web, Android, etc. Java se ha convertido en un lenguaje muy aplicable a
Internet y programación de sistemas distribuidos en general. Pero su campo de aplicación
no es exclusivamente Internet: una de las grandes ventajas de Java es que se procura
que sea totalmente independiente del hardware: existe una "máquina virtual Java" para
varios tipos de ordenadores, también tenemos muchas librerías de las cuales dispone el
usuario para la implementación de los algoritmos que estemos desarrollando
CHRISTIAN IVÁN ESPINOZA GAYTÁN
Python es un lenguaje de programación interpretado, es decir, no necesita ser
preprocesado mediante un compilador, cuya filosofía es la de una sintaxis que favorezca
la escritura de un código legible, por lo cual lo hace un lenguaje de programación más
factible en varios ámbitos de la programación
RUBEN LOBATON SALAMANCA
para mí el lenguaje más práctico para las soluciones en c++ ya que la sintaxis del código
es más sencillo que java y Python y más entendible

P á g i n a 17 | 17

También podría gustarte