Elaborado por: Ing.
Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE ELECTROTECNIA Y COMPUTACION
DEPARTAMENTO DE LENGUAJE Y SIMULACIÓN Asignatura:
Programación II.
Practica de Laboratorio
Douglas Ivan Acevedo Reyes // Mateo Andrés Altamirano Lacayo.
2M1-EO.
1.- Semestre y año: I Semestre 2023
2.- Laboratorio #4: Arreglos unidimensionales y arreglos bidimensionales.
3. -Objetivos del laboratorio
Realizar algoritmos con arreglos bidimensionales, para la generación de un algoritmo en
Pseudocódigo, que contribuyan a la solución de un problema en específico.
4- Información básica:
Para el desarrollo de este laboratorio debemos tener instalado el software DosBox en
nuestro computador. 5.- Recursos requeridos:
DosBox instalado para la realización de los algoritmos.
Computadora
Guía de laboratorio.
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
6.- Ejercicios a realizar:
1. Escribir un programa que lea un arreglo bidimensional de orden N x N en el cuerpo
principal. En un método que calcule lo siguiente:
Que imprima los elementos que están encima de la diagonal inversa.
Que sume los elementos que están debajo de la diagonal principal.
Que determine el elemento mayor del arreglo y su posición.
#include <stdio.h>
#include <conio.h>
Void DInversa(int matriz[][3], int n);
Int suma(int matriz[][3], int n);
Void Mayor(int matriz[][3], int n, int mayor[], int fila[], int columna[]);
Void main(void) {
Int matriz[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Int n = 3;
Clrscr();
Printf(“Elementos encima de la diagonal inversa:\n”);
DInversa(matriz, n);
int suma = Dinversa(matriz, n);
printf(“Suma debajo de la diagonal principal: %d\n”, suma);
int mayor[2], fila[2], columna[2];
Mayor(matriz, n, mayor, fila, columna);
printf(“El elemento mayor es %d en la fila %d y columna %d\n”, mayor[0], fila[0],
columna[0]);
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
getch();
}
Void DInversa(int matriz[][3], int n) {
For (int I = 0; I < n; i++) {
For (int j = 0; j < n; j++) {
If (I + j < n – 1) {
Printf(“%d “, matriz[i][j]);
} else {
Printf(“ “);
}
}
Printf(“\n”);
}
}
Int suma(int matriz[][3], int n) {
Int suma = 0;
For (int I = 1; I < n; i++) {
For (int j = 0; j < I; j++) {
Suma += matriz[i][j];
}
}
Return suma;
}
Void Mayor(int matriz[][3], int n, int mayor[], int fila[], int columna[]) {
Mayor[0] = matriz[0][0];
Fila[0] = columna[0] = 0;
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
For (int I = 0; I < n; i++) {
For (int j = 0; j < n; j++) {
If (matriz[i][j] > mayor[0]) {
Mayor[0] = matriz[i][j];
Fila[0] = I;
Columna[0] = j;
}
}
}
}
2. Escribir un programa que lea una matriz n x n que almacene valores entre 0 y 5
solamente, dentro de un método calcular el total de los valores por fila y por columna
y que cuente cuantos ceros tiene la matriz, imprimir los datos. Ejemplo:
TOTALF
2 5 3 10
0 1 0 1
4 0 2 6
TOTALC 6 6 5
#include <stdio.h>
#include <conio.h>
Void CalT(int matriz[][3], int n, int TF[], int TC[], int ceros[]);
Void main(void) {
Int matriz[3][3] = {{1, 0, 3}, {4, 0, 2}, {5, 5, 0}};
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
Int n = 3;
Int TF[n], TC[n], C[1];
CalT(matriz, n, TF, TC, C);
printf(“Totales por fila:\n”);
for (int I = 0; I < n; i++) {
printf(“%d “, TF[i]);
}
Printf(“\n”);
Printf(“Totales por columna:\n”);
For (int I = 0; I < n; i++) {
Printf(“%d “, TC[i]);
}
Printf(“\n”);
Printf(“Cantidad de ceros en la matriz: %d\n”, C[0]);
Getch();
Clrscr();
}
Void CalT (int matriz[][3], int n, int TF[], int TC[], int C[]) {
For (int I = 0; I < n; i++) {
TF[i] = TC[i] = 0;
}
C[0] = 0;
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
For (int I = 0; I < n; i++) {
For (int j = 0; j < n; j++) {
TF[i] += matriz[i][j];
TC[j] += matriz[i][j];
if (matriz[i][j] == 0) {
C[0]++;
}
}
}
}
3. En cierto curso evaluado basándose en aprobado/reprobado (se aprueba si el promedio es
mayor de 70) cada estudiante ha presentado 4 pruebas. Escriba un programa que las 4
notas (almacénelas en arreglos bidimensionales), dentro de un método que calcule el
promedio, el grado(aprobado(A)/reprobado(F)) y la nota máxima de cada nota:
Ejemplo:
NOTAS PROMEDIO GRADO
78 52 25 96 75 A 85 96 87
84 89 A 47 58 69 49 59
F
Nota máxima 85 96 87 96
#include <stdio.h>
#include <conio.h>
Void main() {
Int notas[4][4];
Float promedio;
Char grado;
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
Int notaM
For(int I = 0; I < 4; i++) {
Printf(“Ingrese las notas del estudiante %d:\n”, i+1);
For(int j = 0; j < 4; j++) {
Printf(“Nota %d: “, j+1);
Scanf(“%d”, ¬as[i][j]);
}
}
For(int I = 0; I < 4; i++) {
Promedio = 0;
notaM = notas[i][0];
For(int j = 0; j < 4; j++) {
Promedio += notas[i][j];
If(notas[i][j] > notaM) {
notaM = notas[i][j];
}
}
Promedio /= 4;
If(promedio >= 70) {
Grado = ‘A’;
} else {
Grado = ‘F’;
}
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
Printf(“Promedio del estudiante %d: %.2f\n”, i+1, promedio);
Printf(“Grado del estudiante %d: %c\n”, i+1, grado);
Printf(“Nota maxima del estudiante %d: %d\n”, i+1, notaM);
}
Getch();
Clrscr();
}
4. Realiza un programa que pida al usuario los elementos de una matriz bidimensional
5X4, estos elementos no pueden ser números negativos, posteriormente muestre en pantalla
los elementos de la matriz y sustituya los elementos de la diagonal principal con 0 e
imprima la nueva matriz
#include <stdio.h>
#include <conio.h>
Void main() {
Int matriz[5][4];
Clrscr();
For(int I = 0; I < 5; i++) {
For(int j = 0; j < 4; j++) {
Do {
Printf(“Ingrese el elemento (%d,%d): “, i+1, j+1);
Scanf(“%d”, &matriz[i][j]);
If(matriz[i][j] < 0) {
Printf(“El elemento debe ser positivo.\n”);
Getch();
Clrscr();
}
} while(matriz[i][j] < 0);
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
}
}
Clrscr();
Printf(“Matriz original:\n”);
For(int I = 0; I < 5; i++) {
For(int j = 0; j < 4; j++) {
Printf(“%d “, matriz[i][j]);
}
Printf(“\n”);
}
Getch();
For(int I = 0; I < 5; i++) {
Matriz[i][i] = 0;
}
Clrscr();
Printf(“Matriz modificada:\n”);
For(int I = 0; I < 5; i++) {
For(int j = 0; j < 4; j++) {
Printf(“%d “, matriz[i][j]);
}
Printf(“\n”);
}
Getch();
}
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
5. Realizar un programa que asigne datos a una matriz N * N y a continuación, escriba
las sumas correspondientes a la diagonal principal de la matriz y la suma de la matriz
inversa.
#include <stdio.h>
#include <conio.h>
#define N 3
Void main(void) {
Int matriz[N][N];
Int I, j;
Int sum_dp = 0, sum_di = 0;
Printf(“Introduce los elementos de la matriz %dx%d:\n”, N, N);
For(I = 0; I < N; i++) {
For(j = 0; j < N; j++) {
Printf(“matriz[%d][%d] = “, I, j);
Scanf(“%d”, &matriz[i][j]);
}
}
For(I = 0; I < N; i++) {
Sum_dp += matriz[i][i];
Sum_di += matriz[i][N-i-1];
}
Printf(“\nLa suma de la diagonal principal es: %d\n”, sum_dp);
Printf(“La suma de la diagonal inversa es: %d\n”, sum_di);
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
Getch();
}
6. Realice un programa de una matriz N * N y que imprima los elementos de la matriz,
así mismo que imprima los elementos que están debajo de la diagonal principal, así como
los elementos que están debajo de la diagonal principal
#include <stdio.h>
#include <conio.h>
Void main() {
Int n, I, j;
Printf(“Ingrese el valor de N: “);
Scanf(“%d”, &n);
Int matriz[n][n];
For (I = 0; I < n; i++) {
For (j = 0; j < n; j++) {
Printf(“Ingrese el elemento [%d][%d]: “, I, j);
Scanf(“%d”, &matriz[i][j]);
}
}
Printf(“\nLa matriz es:\n”);
For (I = 0; I < n; i++) {
For (j = 0; j < n; j++) {
Printf(“%d “, matriz[i][j]);
}
Printf(“\n”);
}
Elaborado por: Ing. Eliezer Aburto Plata
Fecha de elaboración: Junio 2022
Printf(“\nElementos debajo de la diagonal principal:\n”);
For (I = 0; I < n; i++) {
For (j = 0; j < I; j++) {
Printf(“%d “, matriz[i][j]);
}
}
Printf(“\nElementos encima de la diagonal principal:\n”);
For (I = 0; I < n; i++) {
For (j = i+1; j < n; j++) {
Printf(“%d “, matriz[i][j]);
}
}
Getch();
}
7.- Evaluación del laboratorio
Una vez finalizado los ejercicios serán revisados por el docente verificando que se
ejecuten correctamente y cumplan con el enunciado planteado, realizando además
preguntas de control de conocimiento a los estudiantes acerca de las instrucciones o
sentencias realizadas en la resolución de estos. Deberán adjuntar el código fuente en una
carpeta .rar o bien en un documento Word o PDF con los algoritmos realizados y enviarlos
en el correo electrónico en la fecha que establezca el docente.
8.- Nombre del docente: Ing. Eliezer Aburto Plata Firma: ___________________