Taller Estructura de Datos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 27

TALLER #2

NOMBRES:
YORLADIZ DIAZ VARELA
YUDEIMY NAILY ORTIZ PALACIOS

PROFESORA: JUAN CAMILO


TORO

UNIVERSIDAD:TECNOLOGICO
DE ANTIOQUIA

2024
Crear dos matrices de nxn cuyos valores y la longitud n serán insertados por el usuario. Mostrar
las matrices originales y el resultado de la: suma de matrices, la resta, la multiplicación, las
matrices transpuestas.

R/=
Entrada:
Solicitar al usuario la longitud n de las matrices.
Solicitar al usuario que ingrese los valores para llenar las dos matrices de
nxn.
Proceso:
Crear las dos matrices de nxn con los valores ingresados por el usuario.
Realizar las operaciones de suma, resta, multiplicación y obtener las
matrices transpuestas.
Mostrar las matrices originales y los resultados de las operaciones.

Salida:
Imprimir en consola las matrices originales, la suma, la resta, la
multiplicación y las matrices transpuestas.

import java.util.Scanner;

public class OperacionesMatrices {


public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

// Solicitar al usuario la longitud n de las matrices


System.out.print("Ingrese la longitud n de las matrices: ");
int n = scanner.nextInt();

// Crear las matrices


int[][] matrizA = new int[n][n];
int[][] matrizB = new int[n][n];

// Ingresar valores para la matriz A


System.out.println("Ingrese los valores para la matriz A:");
ingresarValoresMatriz(scanner, matrizA);

// Ingresar valores para la matriz B


System.out.println("Ingrese los valores para la matriz B:");
ingresarValoresMatriz(scanner, matrizB);

// Mostrar las matrices originales


System.out.println("Matriz A:");
mostrarMatriz(matrizA);
System.out.println("Matriz B:");
mostrarMatriz(matrizB);
// Realizar operaciones con las matrices
int[][] suma = sumarMatrices(matrizA, matrizB);
int[][] resta = restarMatrices(matrizA, matrizB);
int[][] multiplicacion = multiplicarMatrices(matrizA, matrizB);
int[][] transpuestaA = matrizTranspuesta(matrizA);
int[][] transpuestaB = matrizTranspuesta(matrizB);

// Mostrar los resultados


System.out.println("Suma de matrices:");
mostrarMatriz(suma);
System.out.println("Resta de matrices:");
mostrarMatriz(resta);
System.out.println("Multiplicación de matrices:");
mostrarMatriz(multiplicacion);
System.out.println("Matriz A transpuesta:");
mostrarMatriz(transpuestaA);
System.out.println("Matriz B transpuesta:");
mostrarMatriz(transpuestaB);
}

// Método para ingresar valores en una matriz


public static void ingresarValoresMatriz(Scanner scanner, int[][] matriz) {
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
System.out.print("Ingrese el valor para la posición [" + i + "][" + j + "]: ");
matriz[i][j] = scanner.nextInt();
}
}
}

// Método para mostrar una matriz


public static void mostrarMatriz(int[][] matriz) {
for (int[] fila : matriz) {
for (int valor : fila) {
System.out.print(valor + " ");
}
System.out.println();
}
}

// Método para sumar dos matrices


public static int[][] sumarMatrices(int[][] matrizA, int[][] matrizB) {
int n = matrizA.length;
int[][] resultado = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
resultado[i][j] = matrizA[i][j] + matrizB[i][j];
}
}
return resultado;
}

// Método para restar dos matrices


public static int[][] restarMatrices(int[][] matrizA, int[][] matrizB) {
int n = matrizA.length;
int[][] resultado = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
resultado[i][j] = matrizA[i][j] - matrizB[i][j];
}
}
return resultado;
}

// Método para multiplicar dos matrices


public static int[][] multiplicarMatrices(int[][] matrizA, int[][] matrizB) {
int n = matrizA.length;
int[][] resultado = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
resultado[i][j] += matrizA[i][k] * matrizB[k][j];
}
}
}
return resultado;
}

// Método para obtener la transpuesta de una matriz


public static int[][] matrizTranspuesta(int[][] matriz) {
int n = matriz.length;
int[][] transpuesta = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
transpuesta[j][i] = matriz[i][j];
}
}
return transpuesta;
}
}

1. Diseñe un algoritmo en el cual se declare una matriz de enteros de 5 filas y 4 columnas,


luego solicite los datos al usuario. Mostrar en pantalla el mayor número ingresado por fila y
la posición (columna) donde quedó almacenado. Agregar un método para mostrar en
pantalla el menor número ingresado por columna y la posición (fila) donde quedó
almacenado.

R/=
Entrada:
Declarar una matriz de enteros de 5 filas y 4
columnas. Solicitar al usuario que ingrese los datos
para llenar la matriz.
Proceso:
Encontrar el mayor número por fila y su posición (columna).
Implementar un método para encontrar el menor número por columna y
su posición (fila).

Salida:
Mostrar en pantalla el mayor número ingresado por fila y su posición.
Utilizar el método para mostrar el menor número ingresado por columna y
su posición.

import java.util.Scanner;

publica class MayorMenorMatriz {


public static void main(String[]
args) {
int[][] matriz = new int[5][4];
Scanner scanner = new Scanner(System.in);

// Solicitar datos al usuario y llenar la


matriz for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4; j++) {
System.out.print("Ingrese un número para la posición [" + i + "]["
+ j + "]: ");
matriz[i][j] = scanner.nextInt();
}
}

// Mostrar el mayor número por fila y su


posición for (int i = 0; i < 5; i++) {
int mayor =
matriz[i][0]; int
posicion = 0;
for (int j = 1; j < 4; j+
+) { if (matriz[i][j] >
mayor) {
mayor =
matriz[i][j];
posicion = j;
}
}
System.out.println("El mayor número en la fila " + i + " es: " +
mayor + " en la columna " + posicion);
}

// Mostrar el menor número por columna y su


posición mostrarMenorPorColumna(matriz);
}

// Método para mostrar el menor número por columna y su


posición public static void mostrarMenorPorColumna(int[][]
matriz) {
for (int j = 0; j < 4; j+
+) { int menor =
matriz[0][j]; int
posicion = 0;
for (int i = 1; i < 5; i++) {
if (matriz[i][j] <
menor) { menor =
matriz[i][j];
posicion = i;
}
}
System.out.println("El menor número en la columna " + j + " es: " +
menor + " en la fila " + posicion);
}
}
}

2. Crear un programa que registre el valor de 5 artículos y sus ventas durante los 7 días de la
semana. Crear métodos para: a. Imprimir las ventas del día, b. Imprimir las ventas de la
semana, c. Imprimir el producto con peores ventas del día, d. Imprimir el producto con
mejores ventas en la semana, e. Imprimir las unidades vendidas por producto a la semana.

R/=
Entrada:
El programa debe permitir al usuario registrar el valor de 5 artículos y sus ventas durante
los 7 días de la semana.

Proceso:
Solicitar al usuario que ingrese el valor de 5 artículos y registrar sus ventas durante los 7
días de la semana.
Implementar métodos para:
Imprimir las ventas del día.
Imprimir las ventas de la semana.
Encontrar el producto con peores ventas del día.
Encontrar el producto con mejores ventas en la semana.
Imprimir las unidades vendidas por producto a lo largo de la semana.

Salida:
El programa proporcionará diversas salidas según las opciones seleccionadas por el usuario:
Las ventas del día.
Las ventas de la semana.
El producto con peores ventas del día.
El producto con mejores ventas en la semana.
Las unidades vendidas por producto a lo largo de la semana.

import

java.util.Arrays;

class Articulo {
String nombre;
int[] ventasSemanales;

public Articulo(String nombre) {


this.nombre = nombre;
this.ventasSemanales = new
int[7];
}

public void registrarVenta(int dia, int


cantidad) { ventasSemanales[dia - 1]
+= cantidad;
}
public int obtenerVentasDia(int dia) {
return ventasSemanales[dia - 1];
}

public int obtenerVentasSemanales() {


return Arrays.stream(ventasSemanales).sum();
}

public int obtenerPeorVentaDia() {


return Arrays.stream(ventasSemanales).min().getAsInt();
}

public int obtenerMejorVentaSemana() {


return Arrays.stream(ventasSemanales).max().getAsInt();
}

public int[]
obtenerUnidadesVendidasSemana() {
return ventasSemanales;
}
}

public class
RegistroVentas {
Articulo[] articulos;

public RegistroVentas() {
articulos = new
Articulo[5];
}

public void agregarArticulo(Articulo articulo, int


index) { articulos[index] = articulo;
}

public void imprimirVentasDia(int dia) {


System.out.println("Ventas del día " +
dia + ":"); for (Articulo articulo :
articulos) {
System.out.println(articulo.nombre + ": " +
articulo.obtenerVentasDia(dia));
}
}

public void imprimirVentasSemana() {


System.out.println("Ventas de la
semana:"); for (Articulo articulo :
articulos) {
System.out.println(articulo.nombre + ": "
+
articulo.obtenerVentasSemanales());
}
}
public void imprimirPeorVentaDia() {
int minVentas =
Integer.MAX_VALUE; Articulo
articuloPeorVenta = null;
for (Articulo articulo : articulos) {
int ventas =
articulo.obtenerPeorVentaDia(); if
(ventas < minVentas) {
minVentas = ventas;
articuloPeorVenta =
articulo;
}
}
System.out.println("Producto con peores ventas del
día: " +
articuloPeorVenta.nombre);
}

public void
imprimirMejorVentaSemana() { int
maxVentas = Integer.MIN_VALUE;
Articulo articuloMejorVenta = null;
for (Articulo articulo : articulos) {
int ventas =
articulo.obtenerMejorVentaSemana(); if
(ventas > maxVentas) {
maxVentas = ventas;
articuloMejorVenta =
articulo;
}
}
System.out.println("Producto con mejores ventas en
la semana: " +
articuloMejorVenta.nombre);
}

public void imprimirUnidadesVendidasSemana() {


System.out.println("Unidades vendidas por producto a la
semana:"); for (Articulo articulo : articulos) {
System.out.println(articulo.nombre + ": "
+
Arrays.toString(articulo.obtenerUnidadesVendidasSemana()));
}
}

public static void main(String[] args) {


RegistroVentas registro = new
RegistroVentas();
Articulo articulo1 = new
Articulo("Producto A"); Articulo articulo2
= new Articulo("Producto B"); Articulo
articulo3 = new Articulo("Producto C");
Articulo articulo4 = new
Articulo("Producto D"); Articulo articulo5
= new Articulo("Producto E");

registro.agregarArticulo(articulo1, 0);
registro.agregarArticulo(articulo2, 1);
registro.agregarArticulo(articulo3, 2);
registro.agregarArticulo(articulo4, 3);
registro.agregarArticulo(articulo5, 4);

// Simulación de ventas
for (int dia = 1; dia <= 7;
dia++) {
articulo1.registrarVenta(dia,
10);
articulo2.registrarVenta(dia, 20);
articulo3.registrarVenta(dia, 15);
articulo4.registrarVenta(dia, 25);
articulo5.registrarVenta(dia, 30);
}

registro.imprimirVentasDia(1);
registro.imprimirVentasSemana();
registro.imprimirPeorVentaDia();
registro.imprimirMejorVentaSemana();
registro.imprimirUnidadesVendidasSemana()
;
}
}

3. Diseñe un algoritmo para generar de manera eficiente la siguiente matriz:

1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 3 2 1
1 2 3 4 4 4 4 3 2 1
1 2 3 4 5 5 4 3 2 1
1 2 3 4 5 5 4 3 2 1
1 2 3 4 4 4 4 3 2 1
1 2 3 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1 1
R/=
Entrada:
El único dato de entrada que necesitamos es el tamaño de la matriz cuadrada. Para este
caso específico, la matriz es de tamaño 10x10.

Proceso:
Inicializamos una matriz de tamaño dado con todos sus elementos inicializados a 0.
Iteramos sobre cada elemento de la matriz.
Asignamos el valor correspondiente a cada elemento según el patrón dado, que aumenta
gradualmente desde el borde hacia el centro de la matriz.
Imprimimos la matriz resultante en la consola.
Salida:
La salida esperada es la matriz con el patrón dado, impresa en la consola.

public class MatrizEficiente {

public static void main(String[] args) {


int tamano = 10;
int[][] matriz = generarMatriz(tamano);
imprimirMatriz(matriz);
}

public static int[][] generarMatriz(int tamano) {


int[][] matriz = new int[tamano][tamano];
int limite = (tamano % 2 == 0) ? tamano / 2 : tamano / 2 + 1;

for (int i = 0; i < limite; i++) {


for (int j = i; j < tamano - i; j++) {
matriz[i][j] = i + 1;
matriz[tamano - i - 1][j] = i + 1;
matriz[j][i] = i + 1; matriz[j]
[tamano - i - 1] = i + 1;
}
}

return matriz;
}

public static void imprimirMatriz(int[][] matriz) {


for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
System.out.print(matriz[i][j] + " ");
}
System.out.println();
}
}
}

4. Crear un programa que registre el valor de 5 artículos y sus ventas durante los 7 días de la
semana. Crear métodos para: a. Imprimir las ventas del día, b. Imprimir las ventas de la
semana, c. Imprimir el producto con peores ventas del día, d. Imprimir el producto con
mejores ventas en la semana, e. Imprimir las unidades vendidas por producto a la semana.
R/=
Entrada:
El programa debe permitir al usuario registrar el valor de 5 artículos y sus ventas durante
los 7 días de la semana.

Proceso:
Solicitar al usuario que ingrese el valor de 5 artículos y registrar sus ventas durante los 7
días de la semana.
Implementar métodos para:
Imprimir las ventas del día.
Imprimir las ventas de la semana.
Encontrar el producto con peores ventas del día.
Encontrar el producto con mejores ventas en la semana.
Imprimir las unidades vendidas por producto a lo largo de la semana.

Salida:
El programa proporcionará diversas salidas según las opciones seleccionadas por el usuario:
Las ventas del día.
Las ventas de la semana.
El producto con peores ventas del día.
El producto con mejores ventas en la semana.
Las unidades vendidas por producto a lo largo de la semana.

import

java.util.Arrays;

class Articulo {
String nombre;
int[] ventasSemanales;

public Articulo(String nombre) {


this.nombre = nombre;
this.ventasSemanales = new
int[7];
}

public void registrarVenta(int dia, int


cantidad) { ventasSemanales[dia - 1]
+= cantidad;
}

public int obtenerVentasDia(int


dia) { return
ventasSemanales[dia - 1];
}
public int obtenerVentasSemanales() {
return Arrays.stream(ventasSemanales).sum();
}

public int obtenerPeorVentaDia() {


return Arrays.stream(ventasSemanales).min().getAsInt();
}

public int obtenerMejorVentaSemana() {


return Arrays.stream(ventasSemanales).max().getAsInt();
}

public int[]
obtenerUnidadesVendidasSemana() {
return ventasSemanales;
}
}

public class
RegistroVentas {
Articulo[] articulos;

public RegistroVentas() {
articulos = new
Articulo[5];
}

public void agregarArticulo(Articulo articulo, int


index) { articulos[index] = articulo;
}

public void imprimirVentasDia(int dia) {


System.out.println("Ventas del día " +
dia + ":"); for (Articulo articulo :
articulos) {
System.out.println(articulo.nombre + ": " +
articulo.obtenerVentasDia(dia));
}
}

public void imprimirVentasSemana() {


System.out.println("Ventas de la
semana:"); for (Articulo articulo :
articulos) {
System.out.println(articulo.nombre + ": "
+
articulo.obtenerVentasSemanales());
}
}

public void imprimirPeorVentaDia() {


int minVentas =
Integer.MAX_VALUE; Articulo
articuloPeorVenta = null;
for (Articulo articulo : articulos) {
int ventas =
articulo.obtenerPeorVentaDia(); if
(ventas < minVentas) {
minVentas = ventas;
articuloPeorVenta =
articulo;
}
}
System.out.println("Producto con peores ventas del
día: " +
articuloPeorVenta.nombre);
}

public void
imprimirMejorVentaSemana() { int
maxVentas = Integer.MIN_VALUE;
Articulo articuloMejorVenta = null;
for (Articulo articulo : articulos) {
int ventas =
articulo.obtenerMejorVentaSemana(); if
(ventas > maxVentas) {
maxVentas = ventas;
articuloMejorVenta =
articulo;
}
}
System.out.println("Producto con mejores ventas en
la semana: " +
articuloMejorVenta.nombre);
}

public void imprimirUnidadesVendidasSemana() {


System.out.println("Unidades vendidas por producto a la
semana:"); for (Articulo articulo : articulos) {
System.out.println(articulo.nombre + ": "
+
Arrays.toString(articulo.obtenerUnidadesVendidasSemana()));
}
}

public static void main(String[] args) {


RegistroVentas registro = new
RegistroVentas();

Articulo articulo1 = new


Articulo("Producto A"); Articulo articulo2
= new Articulo("Producto B"); Articulo
articulo3 = new Articulo("Producto C");
Articulo articulo4 = new
Articulo("Producto D"); Articulo articulo5
= new Articulo("Producto E");

registro.agregarArticulo(articulo1, 0);
registro.agregarArticulo(articulo2, 1);
registro.agregarArticulo(articulo3, 2);
registro.agregarArticulo(articulo4, 3);
registro.agregarArticulo(articulo5, 4);
// Simulación de ventas
for (int dia = 1; dia <= 7;
dia++) {
articulo1.registrarVenta(dia,
10);
articulo2.registrarVenta(dia, 20);
articulo3.registrarVenta(dia, 15);
articulo4.registrarVenta(dia, 25);
articulo5.registrarVenta(dia, 30);
}

registro.imprimirVentasDia(1);
registro.imprimirVentasSemana();
registro.imprimirPeorVentaDia();
registro.imprimirMejorVentaSemana();
registro.imprimirUnidadesVendidasSemana()
;
}
}
5. Crear un programa que almacene las notas de Matemáticas, Biología y Literatura de 10
estudiantes. Según solicitud del usuario (En que asignatura desea imprimir el ranking de
notas) imprima el top 3 de los estudiantes con mejor puntaje y el top 3 de estudiantes con
más bajo rendimiento.

R/=
Entrada:
Almacenar las notas de Matemáticas, Biología y Literatura de 10
estudiantes. Solicitar al usuario en qué asignatura desea imprimir el
ranking de notas.

Proceso:
Implementar un método para calcular el promedio de notas de cada
estudiante. Ordenar los estudiantes según sus promedios de notas en la
asignatura seleccionada. Identificar y mostrar el top 3 de estudiantes con
mejor puntaje y el top 3 de estudiantes con peor rendimiento.

Salida:
Imprimir en pantalla el top 3 de estudiantes con mejor puntaje y el top 3
de estudiantes con peor rendimiento en la asignatura seleccionada por el
usuario.

import java.util.Arrays;

public class RankingNotas {


public static void main(String[] args) {
double[][] notas = new double[10][3]; // 10 estudiantes, 3
asignaturas Scanner scanner = new Scanner(System.in);

// Ingresar las notas de Matemáticas, Biología y Literatura de 10


estudiantes for (int i = 0; i < 10; i++) {
System.out.println("Ingrese las notas del estudiante " + (i
+ 1) + ":"); for (int j = 0; j < 3; j++) {
System.out.print("Nota " + (j + 1)
+ ": "); notas[i][j] =
scanner.nextDouble();
}
}

// Solicitar al usuario en qué asignatura desea imprimir el ranking de


notas System.out.print("En qué asignatura desea imprimir el ranking
de notas
(Matemáticas, Biología,
Literatura): "); String
asignatura = scanner.next();

// Calcular el promedio de notas en la asignatura


seleccionada double[] promedios = new double[10];
for (int i = 0; i < 10; i++) {
promedios[i] = calcularPromedio(notas[i]);
}

// Ordenar los estudiantes según sus promedios en la asignatura


seleccionada int[] indices = new int[10];
for (int i = 0; i < 10;
i++) { indices[i] =
i;
}
Arrays.sort(indices, (a, b) -> Double.compare(promedios[b],
promedios[a]));

// Imprimir el top 3 de estudiantes con mejor y peor rendimiento en la


asignatura seleccionada
System.out.println("Top 3 de estudiantes con mejor rendimiento en
" + asignatura + ":");
for (int i = 0; i < 3; i++) {
System.out.println("Estudiante " + (indices[i] + 1) + " - Promedio: "
+ promedios[indices[i]]);
}

System.out.println("Top 3 de estudiantes con peor rendimiento en " +


asignatura
+ ":");
for (int i = 9; i > 6; i--) {
System.out.println("Estudiante " + (indices[i] + 1) + " - Promedio: "
+ promedios[indices[i]]);
}
}

// Método para calcular el promedio de notas de un


estudiante public static double
calcularPromedio(double[] notas) {
double suma = 0;
for (double nota :
notas) { suma +=
nota;
}
return suma / notas.length;
}
}

También podría gustarte