Hola a todos, hoy os dejo una serie de ejercicios propuestos y resueltos sobre matrices en pseudocódigo.
Los ejercicios no tienen una única solución, el objetivo es que haga lo que pide y si se pide que se haga de una forma especifica hacerlo.
Esta vez, están hechos en PseInt, pero os recomiendo que los penséis un poco antes de poneros a programar. Los indices de los arrays o arreglos que usaremos sera el predeterminado por PseInt, es decir, que empezaran en 1. Puedes hacerlos como te convengan
¡Tenemos curso en udemy y tutellus!
También esta disponible en tutellus con una increíble oferta: ¡6€!
https://www.tutellus.com/tecnologia/desarrollo-web/iniciacion-a-la-programacion-con-pseint-29001?cupon=DDR
Aquí os dejo el curso de pseudocodigo:
Curso Pseudocódigo con Pseint
En youtube tenemos un curso completo de Pseudocódigo con PseInt:
Si tienes alguna duda o quieres proponer alguna solución alternativa, deja un comentario en este post o mándanos un mensaje a administrador@discoduroderoer.es También dejare algunos comentarios para explicar que hace cada paso. Puedes ponerlos con //
ATENCIÓN: si copias el código y te salta algún tipo de error, revisar el tipo de lenguaje que usas. Puedes cambiarlo en Configurar-Opciones del lenguaje-personalizado
1) Haz lo mismo que el ejercicio 5 de los ejercicios propuestos de arreglos pero con un arreglo o array multidimensional. Ten en cuenta que no podemos tener una columna con cadena y otra con números, así que usa la función convertiratexto(numero) que viene en PseInt. Piensa cuantas columnas y filas debera tener el array o arreglo, también de que forma deberemos recorrer el array o arreglo según lo que nos pide.
Spoiler Inside |
SelectShow> |
SubProceso mostrarArrays ( nombres, FILAS )
Para i<-1 Hasta FILAS Con Paso 1 Hacer
//Usamos un bucle ya que seria mas complicado(no es imposible)
//mostrar dos valores en una misma instruccion
escribir "La longitud del nombre ",nombres[i,1]," es de ",nombres[i, 2]
Fin Para
Fin SubProceso
Proceso Ejercicio6
//Declaramos variables
Definir longitud_nombres como entero
Definir nombres como cadena
Definir FILAS como entero
definir num_nombre como cadena
//Definimos las filas del array por teclado
escribir "Introduce las filas del array multidimensional"
leer FILAS
//Definimos el array
Dimension nombres[FILAS, 2]
//Introducimos los nombres y la longitud de los mismos
Para i<-1 Hasta FILAS Con Paso 1 Hacer
escribir "Introduce un nombre en la fila ",i
leer nombres[i, 1]
num_nombre<-convertiratexto(Longitud(nombres[i, 1]))
nombres[i, 2]<-num_nombre
Fin Para
//Invocamos la función
mostrarArrays( nombres, FILAS)
FinProceso
|
2) Crea un arreglo o array multidimensional con un tamaño que nosotros le indiquemos por teclado (puede ser 6×4, 7×2, etc.), recorre el array o arreglo e introduce número aleatorios (función azar(x) donde x es el limite donde generara), crea una función llamada rellenaArray. Por último, muestralos por pantalla tal como quedarían en el array o arreglo, es decir, si el array es de 5×5 tendremos que hace que cada 5 números baje una línea, por ejemplo:
5 2 6 8 4
5 4 3 2 1
9 8 7 4 2
9 8 7 5 2
2 3 5 4 2
Para escribir sin que salte de linea, usamos Sin Saltar
Spoiler Inside |
SelectShow> |
SubProceso rellenaArray ( num, FILAS, COLUMNAS )
Para i<-1 Hasta FILAS Con Paso 1 Hacer
Para j<-1 Hasta COLUMNAS Con Paso 1 Hacer
//Genera numeros entre 0 y 9
num[i,j]<-azar(10)
Fin Para
Fin Para
Fin SubProceso
SubProceso mostrarArray ( num, FILAS, COLUMNAS)
Para i<-1 Hasta FILAS Con Paso 1 Hacer
Para j<-1 Hasta COLUMNAS Con Paso 1 Hacer
escribir num[i,j]," " Sin Saltar
Fin Para
//Salto de linea
escribir ""
Fin Para
Fin SubProceso
Proceso Ejercicio7
//Declaramos variables
Definir num como entero
Definir FILAS como entero
Definir COLUMNAS Como Entero
//Definimos las filas y columnas del array por teclado
escribir "Introduce las filas del array"
leer FILAS
escribir "Introduce las columnas del array"
leer COLUMNAS
//Definimos el array
Dimension num[FILAS, COLUMNAS]
//Invocamos la función
rellenaArray(num, FILAS, COLUMNAS)
mostrarArray( num, FILAS, COLUMNAS)
FinProceso
|
3) Crea un arreglo o array multidimensional que contenga 3 columnas y las filas que tu quieras, las dos primeras columnas tendrán números y en la 3 columna sera el resultado de sumar el número de la primera y segunda columna. Muestra el array o arreglo de la siguiente forma:
3 + 5 = 8
4 + 4 = 7
…
Piensa de que forma puedes mostrar con un solo bucle.
Spoiler Inside |
SelectShow> |
SubProceso mostrarArray ( num, FILAS )
Para i<-1 Hasta FILAS Con Paso 1 Hacer
escribir num[i,1]," + ",num[i,2]," = ",num[i, 3]
Fin Para
Fin SubProceso
Proceso Ejercicio8
//Declaramos variables
Definir num como entero
Definir FILAS como entero
Definir COLUMNAS Como Entero
//Definimos las fila del array por teclado, las columnas
//ya sabemos que siempre seran 3
escribir "Introduce las filas del array multidimensional"
leer FILAS
COLUMNAS<-3
//Definimos el array
Dimension num[FILAS, COLUMNAS]
//Introducimos los nombres y la longitud de los mismos
Para i<-1 Hasta FILAS Con Paso 1 Hacer
Para j<-1 Hasta COLUMNAS Con Paso 1 Hacer
//Cuando j llegue a 3 (donde debemos sumar), sumara los valores anteriores,
//esto permite que nos ahorremos despues un bucle
si (j=COLUMNAS) Entonces
num[i,j]<-num[i,1]+num[i,2]
Sino
Escribir "Introduce un numero para la FILA ",i," COLUMNA ",j
leer num[i,j]
FinSi
Fin Para
Fin Para
//Invocamos la función
mostrarArray( num, FILAS)
FinProceso
|
4) Crea un arreglo o array multidimensional con un tamaño que definiremos nosotros por teclado, contendrá números aleatorios usando la función anterior y crearemos un array o arreglo unidimensional donde se copiaran los números que contiene el array multidimensional. Piensa que tamaño debe tener el array o arreglo unimensional.
Spoiler Inside |
SelectShow> |
SubProceso copiaArray ( num_multidimensional,num_unidimensional, FILAS, COLUMNAS )
//Esta variable la usaremos para controlar
definir saltador como entero
saltador<-0
Para i<-1 Hasta FILAS Con Paso 1 Hacer
Para j<-1 Hasta COLUMNAS Con Paso 1 Hacer
num_unidimensional[j+saltador]<-num_multidimensional[i,j]
Fin Para
saltador<-saltador+COLUMNAS
Fin Para
Fin SubProceso
SubProceso rellenaArray ( num, FILAS, COLUMNAS )
Para i<-1 Hasta FILAS Con Paso 1 Hacer
Para j<-1 Hasta COLUMNAS Con Paso 1 Hacer
//Genera numeros entre 0 y 9
num[i,j]<-azar(10)
Fin Para
Fin Para
Fin SubProceso
SubProceso mostrarArray ( num_unidimensional, FILAS, COLUMNAS)
Para i<-1 Hasta FILAS*COLUMNAS Con Paso 1 Hacer
escribir num_unidimensional[i]
Fin Para
Fin SubProceso
Proceso Ejercicio9
//Declaramos variables
Definir num_multidimensional como entero;
Definir num_unidimensional como entero;
Definir FILAS como entero
Definir COLUMNAS Como Entero
//Definimos las filas y columnas del array por teclado
escribir "Introduce las filas del array"
leer FILAS
escribir "Introduce las columnas del array"
leer COLUMNAS
//Definimos el array
Dimension num_multidimensional[FILAS, COLUMNAS]
Dimension num_unidimensional[FILAS*COLUMNAS]
//Invocamos laa funciones
rellenaArray(num_multidimensional, FILAS, COLUMNAS)
copiaArray(num_multidimensional,num_unidimensional, FILAS, COLUMNAS)
mostrarArray( num_unidimensional, FILAS, COLUMNAS)
FinProceso
|
5) Crea un array o arreglo multidimensional que contenga la tabla de multiplicar del 1 al 9 (10 filas y 10 columnas). La primera fila y la columna debe contener estos números. Algo así:

El resto de números deberemos calcularlo, usando los numeros que disponemos, es decir, en la primera fila de 0, calculara 1*1, 1*2, 1*3, etc. usando las posiciones del array o arreglo. Así debe quedar al final:

No os preocupéis por la apariencia ya que es por el número de dígitos.
Spoiler Inside |
SelectShow> |
SubProceso calculaTabla ( tabla_multiplicar, FILAS, COLUMNAS )
Para i<-2 Hasta FILAS Con Paso 1 Hacer
Para j<-2 Hasta COLUMNAS Con Paso 1 Hacer
//Empezamos desde la posicion 2,2
//Lo único que varia es la fila o la columna en cada caso
tabla_multiplicar[i,j]<-tabla_multiplicar[i,1]*tabla_multiplicar[1,j]
Fin Para
Fin Para
Fin SubProceso
SubProceso rellenaColumnasPrinc ( tabla_multiplicar, FILAS)
definir contador como entero
contador<-0
Para i<-1 Hasta FILAS Con Paso 1 Hacer
tabla_multiplicar[1,i]<-contador
tabla_multiplicar[i,1]<-contador
contador<-contador+1
Fin Para
Fin SubProceso
SubProceso mostrarArray ( tabla_multiplicar, FILAS, COLUMNAS)
Para i<-1 Hasta FILAS Con Paso 1 Hacer
Para j<-1 Hasta COLUMNAS Con Paso 1 Hacer
escribir tabla_multiplicar[i,j]," " Sin Saltar
Fin Para
//Salto de linea
escribir ""
Fin Para
Fin SubProceso
Proceso Ejercicio10
//Definimos las variables
definir FILAS como entero
definir COLUMNAS como entero
FILAS<-10
COLUMNAS<-10
dimension tabla_multiplicar[FILAS,COLUMNAS]
//Funciones
rellenaColumnasPrinc(tabla_multiplicar, FILAS)
calculaTabla(tabla_multiplicar, FILAS, COLUMNAS )
mostrarArray(tabla_multiplicar, FILAS, COLUMNAS)
FinProceso
|
6) Construya un algoritmo que al recibir los montos de ventas mensuales de cinco departamentos de una fábrica, proporciona la siguiente información:
- Realizar un subproceso para saber las ventas mensuales de la fábrica.
- Realizar un subproceso para el monto anual.
- Realizar un subproceso para obtener el monto del departamento que tuvo la mayor venta en el mes de julio.
- Realizar un subproceso que se le pase como parámetro el número del departamento y obtenga la mayor venta.
- Realizar un menú con el comando según para mandar a llamar a los subprocesos anteriores.
Spoiler Inside |
SelectShow> |
//Nos dice cual es departamento que mas ha producido en un mes concreto
Funcion ventaMayorMes ( montones Por Referencia, NUM_DEPARTAMENTOS, mes )
mayor_elemento = 0
indice_departamento = 0
//Solo recorremos una columna(de arriba a abajo)
Para i<-0 Hasta NUM_DEPARTAMENTOS-1 Con Paso 1 Hacer Si montones(i, mes) > mayor_elemento Entonces
mayor_elemento = montones(i, mes)
indice_departamento = i
Fin Si
Fin Para
Escribir "La mayor venta del mes ",(mes+1), " es de ", mayor_elemento, " por el departamento ",(indice_departamento+1)
Fin Funcion
//Indica el mes donde mas se ha producido de un departamento concreto
Funcion ventaMayorDepartamento ( montones Por Referencia, MESES , departamento )
mayor_elemento = 0
indice_mes = 0
//Recorremos una fila (de izquierda a derecha)
Para i<-0 Hasta MESES-1 Con Paso 1 Hacer Si montones(departamento, i) > mayor_elemento Entonces
mayor_elemento = montones(departamento, i)
indice_mes = i
Fin Si
Fin Para
Escribir "La mayor venta del departamento ",(departamento+1), " es de ", mayor_elemento, " en el mes ",(indice_mes+1)
Fin Funcion
//Realiza la suma de todos los elementos de la matriz
Funcion ventaAnual ( montones Por Referencia, NUM_DEPARTAMENTOS, MESES )
suma = 0
Para i<-0 Hasta NUM_DEPARTAMENTOS-1 Con Paso 1 Hacer
Para j<-0 Hasta MESES-1 Con Paso 1 Hacer
suma = suma + montones(i,j)
Fin Para
Fin Para
Escribir "La venta anual es ",suma
Fin Funcion
//Reaaliza la venta mensual de todos los departamentos de cada uno de los meses
Funcion ventasMensuales ( montones Por Referencia, NUM_DEPARTAMENTOS, MESES )
suma = 0
Para i<-0 Hasta MESES-1 Con Paso 1 Hacer
Para j<-0 Hasta NUM_DEPARTAMENTOS-1 Con Paso 1 Hacer
suma = suma + montones(j,i)
Fin Para
Escribir "MES: ", (i+1) , " la suma es ", suma
suma = 0 //Reiniciamos la variable
Fin Para
Fin Funcion
Algoritmo ejercicio_matrices_1
//Constantes usadas
NUM_DEPARTAMENTOS = 5
MESES = 12
//Creo la matriz
dimension montones(NUM_DEPARTAMENTOS,MESES)
//Creo valores aleatorios
Para i<-0 Hasta NUM_DEPARTAMENTOS-1 Con Paso 1 Hacer
Escribir "Departamento ",(i+1),": " Sin Saltar
Para j<-0 Hasta MESES-1 Con Paso 1 Hacer
montones(i, j) = Aleatorio(10, 99)
Escribir montones(i,j) , " " Sin Saltar
Fin Para
Escribir ""
Fin Para
//Menu
salir = Falso
Mientras no salir Hacer
Escribir "---MENU---"
Escribir "Elige una opcion"
Escribir "1. Ventas Mensuales"
Escribir "2. Venta Anual"
Escribir "3. Mayor venta MES julio"
Escribir "4. Mayor venta Departamento"
Escribir "5. Salir"
leer opcion_menu
//Simplemente cada opcion llama a una funcion
Segun opcion_menu Hacer
1:
ventasMensuales(montones, NUM_DEPARTAMENTOS, MESES)
2:
ventaAnual(montones, NUM_DEPARTAMENTOS, MESES)
3:
ventaMayorMes(montones, NUM_DEPARTAMENTOS, 6)
4:
Escribir "indica el numero de departamento"
leer departamento
ventaMayorDepartamento(montones, NUM_DEPARTAMENTOS, departamento-1)
5:
salir = Verdadero
De Otro Modo:
Escribir eligue una opcion correcta
Fin Segun
Fin Mientras
FinAlgoritmo
|
7) Crear una matriz de 5×7, donde 5 representan la semana de un mes y 7 los días de la semana
La estructura registrara la temperatura diaria de una cabina de pago, estos oscilan entre los 7 y 38 grados.
deberá llenar la matriz de forma aleatoria para el mes de mayo donde el primer dia inicia en lunes y el
ultimo (31) se ubica en el miercoles.
Se nos pide hacer lo siguiente:
– Obtener la temperatura mas alta y baja de la semana y que dia se produjo (lunes,martes, etc etc).
– Promedio temperatura de la semana.
– Temperatura mas alta del mes y su dia
Spoiler Inside |
SelectShow> |
Algoritmo sin_titulo
//Constantes
FILAS <- 5
COLUMNAS <-7
LUNES <- 0
MARTES <- 1
MIERCOLES <- 2
JUEVES <- 3
VIERNES <- 4
SABADO <- 5
DOMINGO <- 6
//Arreglos y matrices
Dimension dias(COLUMNAS)
dias(0)<-"Lunes"
dias(1)<-"Martes"
dias(2)<-"Miercoles"
dias(3)<-"Jueves"
dias(4)<-"Viernes"
dias(5)<-"Sabado"
dias(6)<-"Domingo"
Dimension temperaturas[5,7];
//Cabecera
Escribir "LU MA MI JU VI SA DO";
limite <- 0
//Recorremos las 5 semanas
Para i<-0 Hasta FILAS-1 Con Paso 1 Hacer
//Si es la ultima semana, recorremos hasta el miercoles
Si i=FILAS-1 Entonces
limite <- MIERCOLES
Sino
limite <- DOMINGO
Fin Si
//Recorremos los dias, segun el limite
Para j<-0 Hasta limite Con Paso 1 Hacer
//Rellenamos la temperatura de un dia aleatoriamente
temperaturas(i,j) <- Aleatorio(7,38)
//Si es menor que 10, le ponemos un espacio delante.
//Para que se adapte bien
Si temperaturas(i,j)<10 Entonces
Escribir " " ,temperaturas(i,j) " " Sin Saltar
Sino
Escribir temperaturas(i,j) " " Sin Saltar
Fin Si
Fin Para
Escribir ""
Fin Para
//Variables para la temperatura mas alta del mes y su dia(numero y nombre del dia)
mayorTemperaturaGeneral <- temperaturas(0,0)
diaMayorTemperaturaGeneral <- 1
diaSemanaMayorTemperaturaGeneral <- 0
//Recorremos las 5 semanas
Para i<-0 Hasta FILAS-1 Con Paso 1 Hacer
//Cada semana se reinicia
//Variables para el mayor y menor de la semana
mayorTemperaturaSemana <- temperaturas(i,0)
diaMayorTemperaturaSemana <- LUNES
menorTemperaturaSemana <- temperaturas(i,0)
diaMenorTemperaturaSemana <- LUNES
//sumador
sumaTemperatura <- 0
//Si es la ultima semana, recorremos hasta el miercoles
Si i=FILAS-1 Entonces
limite <- MIERCOLES
Sino
limite <- DOMINGO
Fin Si
//Recorremos los dias, segun el limite
Para j<-0 Hasta limite Con Paso 1 Hacer
//Comprobamos las temperaturas (mayor en la semana)
Si temperaturas(i,j)>mayorTemperaturaSemana Entonces
mayorTemperaturaSemana <- temperaturas(i,j)
diaMayorTemperaturaSemana <- j
Fin Si
//Comprobamos las temperaturas (menor en la semana)
Si temperaturas(i,j)<menorTemperaturaSemana Entonces
menorTemperaturaSemana <- temperaturas(i,j)
diaMenorTemperaturaSemana <- j
Fin Si
//Comprobamos las temperaturas (mayor en el mes)
Si temperaturas(i,j)>mayorTemperaturaGeneral Entonces
mayorTemperaturaGeneral <- temperaturas(i,j)
diaSemanaMayorTemperaturaGeneral <- j
//Obtenemos el dia del mes en numero
diaMayorTemperaturaGeneral <- (i * COLUMNAS) + j+1
Fin Si
//sumamos la temperatura
sumaTemperatura<-sumaTemperatura + temperaturas(i,j)
Fin Para
//mostramos los datos de la semana
Escribir "En la semana ",(i+1), " la mayor temperatura es de ",mayorTemperaturaSemana," en el dia ", dias(diaMayorTemperaturaSemana)
Escribir "En la semana ",(i+1), " la menor temperatura es de ",menorTemperaturaSemana," en el dia ", dias(diaMenorTemperaturaSemana)
escribir ""
//calculo la media o promedio
media<- sumaTemperatura / COLUMNAS
Escribir "La media de la semana ",(i+1), "es de ",media
Escribir ""
Fin Para
//Mostramos los datos del mes
Escribir "La mayor temperatura del mes es de ",mayorTemperaturaGeneral," en el dia ", dias(diaSemanaMayorTemperaturaGeneral), "(",diaMayorTemperaturaGeneral,")"
FinAlgoritmo
|
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
hola, tengo una pregunta sucede que cuando defino una variable como carácter y en mi programa coloco un numero, este lee el número, es decir no funciona definir una variable como carácter, como puedo solucionar este problema?
Disculpa ¿Cómo podrias hacer esto en codigo en consola de visual studio?
Programa que de la temperatura de 2 dias suponiendo que el dia tiene 3 hrs (El usuario pone la temperatura de cada hora) Porfa lo tengo que entregar el lunes 17 de septiembre del 2018.
saludos los ejercicios 6 y 7 no estan bien ERROR 303: Subindice (0) fuera de rango (1…5)
No se encontro descripción para este error vota este error
Es por el perfil, revisalo
ayudenme con este ejercicio por favor!!
se tiene como datos las ventas bimestrales de cinco departamentos de una empresa(ropa, calzados, artefactos, farmacia y ferreteria) para el año 2019 (generar al azar dichas ventas con un máximo de 50000 por bimestre), escribir un algoritmo para calcular e imprimir:
a. El total de ventas por cada bimestre
b. El promedio de las ventas bimestrales
c. El mayor y menor promedio de ventas y a que departamento corresponde
d. La cantidad de ventas que superan al promedio y la cantidad de ventas que son inferiores al promedio
e. las ventas anuales por cada departamento
f. la venta total anual
Trabajadores de cierta empresa reciben un bono de fin de año adicional a su salario de acuerdo a su antigüedad en la empresa. Si tiene menos de 1 año de trabajo, recibe 40 % de su salario como bono; si ha trabajado entre 1 y 10 años recibe el 70% de su salario, y si tiene más de 10 años, recibe un 90 % de su salario como bono, después de calcular el bono guardar toda la informacion en un arreglo al ingresar 0 debe mostrar el arreglo en formato tabla y el calculo del total bono pagado, salario pagado y cantidad de trabajadores.
buenas noches alguien me puede sacar de este problema gracias 5) El programa pide por teclado tres números; si el primero es negativo, debe imprimir el producto de los tres y si no lo es, imprimirá la suma.
Hacer una matriz m x n y imprimirla
Hola alguien me podria ayudar con este algoritmo se me a complicado bastante el tratar de dar los comandos: //Llenar una matriz de 5 x 5. Calcular la suma de cada fila y almacenarla en un vector, la suma de
//cada columna y almacenarla en otro vector. Mostrar resultados.
//Declaramos variables
hola , me pueden ayudar indicando como elaborar matrices con rango de edades ?