Autor Tema: Problema escalera de números con matrices n valores fila código Java laboratorio  (Leído 7540 veces)

Jarol Salazar

  • Sin experiencia
  • *
  • Mensajes: 6
  • Estudiante de Informática Empresarial.
    • Ver Perfil
Buenas!
Soy yo de nuevo, esta vez es una duda sobre matrices, nos dejaron un laboratorio donde tenemos que hacer una "escalera" con las matrices.

Es algo tal que así:
1
12
123
1234

Con "n" cantidad de valores, quisiera que me ayudaran con el código.

No hay nada hecho por eso no agrego el código (Obviamente xD)

Muchas gracias.
« Última modificación: 23 de Octubre 2020, 14:33 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Escalera con matriz/ces
« Respuesta #1 en: 27 de Septiembre 2019, 23:43 »
Te propongo esta solución.

Hay comentarios explicando.
Para rellenar la matriz uso un while y un for anidado. Es lo más lioso del programa, de hecho, no me ha salido a la primera.
Yo empiezo a rellenar por abajo, desde 1 hasta n. Bueno, en realidad va desde 0 hasta n-1, pero le sumo 1 antes de guardar el valor en la matriz.

Tras rellenar la última columna, n se decrementa y así repetimos el proceso en la penúltima columna, solo que ahora va de 1 hasta n-1.
Luego de 1 hasta n-2....

Así hasta llegar a la primera fila, donde solo guardaremos un 1.

El resto de posiciones se quedan con valor 0. Al imprimir en pantalla la matriz, evitamos imprimir los valores 0, así da efecto de escalera.

Código: [Seleccionar]
public class Escalera {

public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
//Pedimos cantidad de valores
int n;
System.out.print("¿Cuántos valores?: ");
n = teclado.nextInt();

//Creamos matriz
int[][] escalera = new int[n][n];

/*
* Llenamos matriz. Podemos empezar desde abajo
* con un bucle hasta n.
* Cada iteracion n se reduce hasta llegar a 0
* para así recorrer todas las filas desde n-1 hasta 0.
* Para recorrer las columnas usaremos otro varaible
* de un bucle for, que habrá que aumentar en 1 el valor
* de n en cada iteración para que recorra correctamente
* todas las columnas.
*/

while (n >= 0) {
n--;

for (int j = 0; j < n+1; j++)
escalera[n][j] = j+1;
}

/*
* Mostramos la matriz.
* Evitaremos imprimir los valores 0
* que no han recibido valores.
* Esto dará sensación de escalera.
*/


for (int j = 0; j < escalera.length; j++) {
for (int z = 0; z < escalera[0].length; z++)
if (escalera[j][z] != 0)
System.out.print(escalera[j][z]);

System.out.println();
}

teclado.close();

}

}

En pantalla tenemos este resultado:
Código: [Seleccionar]
¿Cuántos valores?: 5
1
12
123
1234
12345
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

MariAlejandra

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola, buenas, espero que todos esten muy bien.
La siguiente informacion que les dare, si es de matrices pero es de matrices dispersas.

el ejercicio esta en UML( lenguaje de modelado unificado), y este tiene algunas especificaciones:

Tenga en cuenta la siguientes clases para todos los puntos del taller.

 

clase Tripletas
  privado:
    real: Mat[ ][ ]
    entero: N,M
  publico:             
     Tripletas ( entero: x )
     real: obtenerDato( entero: i, j)
     asignarDato(entero: i, j; real: d)
     real :promedio()
     entero:mayor()
     entero: promedioPares()
     entero: vecesMayor()
     entero:catidadPares()
fin clase

Tripletas:: Tripletas (entero x)
  N =x
  M = 3
  Mat = nuevo real[ N ][ M]
fin metodo

entero:Tripletas::obtenerDato(entero: i,j)
      devolver ( Mat[ i ][ j ] )
fin metodo

Tripletas::asignarDato(entero: i, j: real n)
       Mat[ i ][ j ] = n
fin metodo




 



















 
 
Asuma que se tiene un objeto de la clase Tripletas con N = 12  y la matriz Mat[ ][] que se muestra a continuación.
Hacer la prueba de escritorio al método insertar con los parámetros 2, 3, 10.

 
lógico:Tripleta:: insertar (entero:f,c; real: d )
lógico: respuesta= falso
entero: i = 2, j , du = Mat[1] [3]+1
mientrar i <=du and Mat[ i ] [ 1 ]< f haga
      i = i+1
fin mientras
mientras i <=du and Mat[ i ][ 1 ]= f  and Mat[ i ][ 2 ]< c and haga
      i = i+1
fin mientras
si i < N –1 entonces
    respuesta = verdadero
    si i > du entonces
       Mat[i+1][1]=Mat[1]
       Mat[i+1][2]=Mat[2]
       Mat[ i ][1]= f
       Mat[ i ][2]= c
      Mat[ i ][3]= d
   si no
      para j = du + 1 hasta i , -1
         Mat[ j +1][1]=Mat[ j ][1]
         Mat[ j +1][2]=Mat[ j ][2]
         Mat[ j +1][3]=Mat[ j ][3]
      fin para     
      Mat[ i ][1]= f
      Mat[ i ][2]= c
      Mat[ i ][3]= d
    fin si
     Mat[ 1 ][3]= Mat[ 1 ][3] +1
finsi
devolver( respuesta)
fin metodo

Utilizando la misma matriz del punto anterior realice la prueba de escritorio a los algoritmos mostrados.

Parte 1
real:Tripleta:: promedio ()
entero: i , Z
entero:  du = Mat[1] [3]+1
real suma = 0, prom
para i = 2 hasta du ,1
   suma = suma + Mat[ i ][3]
fin para
Z =Mat[1][1]*Mat[1][2]
prom = sum/Z
devolver( prom)
fin metodo
   
i =
Z=
du=
¿que hace el método?

Parte 2
Tripleta:: MMMM ()
entero: i = 2, f, k
entero: du = Mat[1] [3]+1
mientrar i <=du  haga
    f =Mat[ i ][1]
    k = Mat[ i ][3]
   mientrar i <=du  and Mat[ i ][1]= f haga
      si   Mat[ i ][3] > k entonces
                 k = Mat[ i ][3]
      fin si
      i = i + 1
   fin mientras
   mostrar(  f , k )
fin mientras
fin metodo

i=
f=
k=
du=
mostrar=
¿que hace el método?

implementarle a la clase Tripletas cada uno de los siguientes métodos.
(tenga en cuenta los ceros de la matriz original)

1.   devolver el promedio de datos pares de la matriz.
2.   devolver la cantidad de datos impares.
3.   mostrar la suma de datos de cada columna.
4.   mostrar el promedio de cada fila.
5.   mostrar las filas que tienen el mayor promedio.
6.   eliminar una tripleta, se recibe la fila, columna y dato.
7.   devolver las veces que se presenta el dato mayor.
8.   mostrar el mayor de los datos impares si no hay notificarlo.
9.   mostrar el menor de los dato pares que tienen suma de dígitos mayor a 10, si no hay notificarlo.
10.   mostrar los datos que tienen la mayor suma de dígitos.
11.   mostrar los datos que tienen la mayor cantidad de dígitos pares.
12.   mostrar el porcentaje de dígitos impares de cada dato.
13.   mostrar la suma de dígitos de cada dato.
14.   mostrar la suma de dígitos de todos los números de la  matriz.
15.   mostrar cada dato de la matriz y las veces que se presenta (no repetir mensajes).

se que es un taller largo pero enserio necesito de su ayuda no se que paso seguir. Abjunte el archivo en zip de lo que llevo, espero me ayuden y de antemano muchas gracias por el apoyo.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".