You are on page 1of 9

6/1/22 23:10 Curso: BMA09O Algoritmos y Estructura de Datos I, Tema: S14: Aplicaciones Arreglos Bidimensionales+PC4

BMA09O Algoritmos y Estructura de Datos I 


Página Principal Mis cursos L-BMA09O S14: Aplicaciones Arreglos Bidimensionales+PC4

General S01: Lenguaje C S02: Tipo de Datos y Variables S03: Constantes, Operadores y Teclado

S04: Funciones Matemáticas Predefinidas S05: Estruc. Repetitivas+PC1 S06: Estruc. Condicionales+PC2

S07: Funciones definidas por usuario PARCIAL S09: Arreglos Unidimensionales

S10: Aplicaciones de Arreglos S11: Arreglo con Funciones+PC3 S12: Arreglos Bidimensionales

S13: Funciones con Arreglos Bidimensionales S14: Aplicaciones Arreglos Bidimensionales+PC4 S15: Cadenas

FINAL SUSTI

TIP´s

Para manejar de forma rápida los arreglos bidimensionales, podemos definirlos como matrices  GLOBALES,
entonces las funciones pueden acceder a ellas directamente.
#include <stdio.h>

int tabla[10][9] = {{0,0,0,0,0,0,0,0,0},

                            {0,0,0,1,1,1,0,0,0},

                            {0,0,1,0,0,0,1,0,0},

                            {0,1,0,0,0,0,0,1,0},


                            {0,1,0,0,0,0,0,1,0},

                            {0,1,1,1,1,1,1,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,1,0,0,0,0,1,0},

                            {0,0,0,0,0,0,0,0,0}};

int fila=10;

int columna=9;

void imprimeMatrizCaracter ();

main() {

   printf("La matriz original es:\n");

   imprimeMatrizCaracter();

void imprimeMatrizCaracter (){

   int i,j;
   for (i=0;i<fila;i++) {

      for (j=0;j<columna;j++) {

         if(tabla[i][j] == 0)

            printf(" ");

         else

            printf("%c",(char)219); //Alt - 219

         }

   printf("\n");

   }

https://univirtual.uni.pe/course/view.php?id=5350&section=14#tabs-tree-start 1/10
6/1/22 23:10 Curso: BMA09O Algoritmos y Estructura de Datos I, Tema: S14: Aplicaciones Arreglos Bidimensionales+PC4

Reusando funciones: Cuando queremos reusar funciones, debemos de tener cuidado que la función no
"este personalizada". Esto significa que no exista dentro de ella nada que indique la naturaleza de lo que se
esta procesando. Ejemplo: una función para ingresar el número de filas o el número de columna, no puede
indicar dentro de la función un mensaje que diga: "Ingrese el número de fila". Ok?
Ejemplo: Queremos tener una función que nos permita imprimir matrices de diferente tamaño?. Una opción
es configurar las variables del tamaño de la matriz antes de invocar a la función para su impresión.
#include <stdio.h>

int tabla[10][9] = {{0,0,0,1,1,1,0,0,0},

                            {0,0,1,0,0,0,1,0,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,1,1,1,1,1,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,1,0,0,0,0,1,0}};

int tabla1[5][9] = {{0,1,1,1,1,1,1,1,1},

                            {1,0,0,0,0,0,0,0,0},

                            {1,0,0,0,0,0,0,0,0},

                            {1,0,0,0,0,0,0,0,0},

                            {0,1,1,1,1,1,1,1,1}};


int fila, columna;

void imprimeMatrizCaracter (int m[fila][columna]);

main() {

   printf("La primera matriz es:\n");

   fila=10;

   columna=9;

   imprimeMatrizCaracter(tabla);

   printf("\n");

   printf("La segunda matriz es:\n");

   fila=5;

   columna=9; 

   imprimeMatrizCaracter(tabla1);

void imprimeMatrizCaracter (int m[fila][columna]){

   int i,j;

   for (i=0;i<fila;i++) {

      for (j=0;j<columna;j++) {

         if(m[i][j] == 0)

            printf(" ");

         else

            printf("%c",(char)219); //Alt - 219

         }

      printf("\n");

   }

https://univirtual.uni.pe/course/view.php?id=5350&section=14#tabs-tree-start 2/10
6/1/22 23:10 Curso: BMA09O Algoritmos y Estructura de Datos I, Tema: S14: Aplicaciones Arreglos Bidimensionales+PC4

Ejemplo 01M: Se tiene la siguiente matriz que define el formato del caracter A (mayúscula).

   int tabla[10][9] = {{0,0,0,0,0,0,0,0,0},

                               {0,0,0,1,1,1,0,0,0},

                               {0,0,1,0,0,0,1,0,0},

                               {0,1,0,0,0,0,0,1,0},

                               {0,1,0,0,0,0,0,1,0},

                               {0,1,1,1,1,1,1,1,0},

                               {0,1,0,0,0,0,0,1,0},

                               {0,1,0,0,0,0,0,1,0},

                               {0,1,1,0,0,0,0,1,0},

                               {0,0,0,0,0,0,0,0,0}};

Se pide elaborar las siguientes funciones:

rotarDerechaMatrizCaracter: Función que rota una matriz 90 grados en sentido horario.


rotarIzquierdaMatrizCaracter: Función que rota una matriz 90 grados en sentido antihorario. 
imprimeMatrizCaracter: Función que imprime una matriz cuyos elementos son "0" y "1".
Cuando el elemento es cero (0), debe imprimir espacio en blanco (" ").
Cuando el elemento es uno (1) debe imprimir el caracter '█' (ALT - 219).
Observar que la función imprimeMatrizCaracter es la única función que debe imprimir las matrices. El
programa debe mostrar los resultados de la siguiente manera:

Solución:

https://univirtual.uni.pe/course/view.php?id=5350&section=14#tabs-tree-start 3/10
6/1/22 23:10 Curso: BMA09O Algoritmos y Estructura de Datos I, Tema: S14: Aplicaciones Arreglos Bidimensionales+PC4

#include <stdio.h>

int tabla[10][9] = {{0,0,0,0,0,0,0,0,0},

                            {0,0,0,1,1,1,0,0,0},

                            {0,0,1,0,0,0,1,0,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,1,1,1,1,1,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,0,0,0,0,0,1,0},

                            {0,1,1,0,0,0,0,1,0},

                            {0,0,0,0,0,0,0,0,0}};

int tablaHora[9][10]; 

int tablaAntihora[9][10];

int fila,columna;

void imprimeElementosMatrizEntero (int m[fila][columna]);

void rotarDerechaMatrizCaracter (int m[fila][columna]);

void rotarIzquierdaMatrizCaracter (int m[fila][columna]);

main(){

   printf("La matriz original es: \n");

   fila=10,columna=9; 

   imprimeElementosMatrizEntero (tabla);

   rotarDerechaMatrizCaracter (tabla);

   printf("La matriz rotada en sentido horario: \n");

   fila=9,columna=10;

   imprimeElementosMatrizEntero (tablaHora);

   fila=10,columna=9;

   rotarIzquierdaMatrizCaracter (tabla);

   printf("La matriz rotada en sentido antihorario: \n");

   fila=9,columna=10;

   imprimeElementosMatrizEntero (tablaAntihora);

   system("PAUSE");

void imprimeElementosMatrizEntero (int m[fila][columna]){

   int i,j; 
   for (i=0;i<fila;i++){

      for (j=0;j<columna;j++){

         if(m[i][j]==0){

            printf(" ");

            }

         if(m[i][j]==1){

            printf("%c",(char)219);

            }

         } 

      printf("\n");

      }

void rotarDerechaMatrizCaracter (int m[fila][columna]){

   int i,j;
   for (i=0;i<columna;i++) {

      for (j=0;j<fila;j++){

         tablaHora[i][fila-1-j]=m[j][i];

         } 

      }

void rotarIzquierdaMatrizCaracter (int m[fila][columna]){

   int i,j;
   for (i=0;i<columna;i++) {

      for (j=0;j<fila;j++){

         tablaAntihora[columna-1-i][j]=m[j][i];

         } 

      } 

https://univirtual.uni.pe/course/view.php?id=5350&section=14#tabs-tree-start 4/10
6/1/22 23:10 Curso: BMA09O Algoritmos y Estructura de Datos I, Tema: S14: Aplicaciones Arreglos Bidimensionales+PC4

LABORATORIO 13: Práctica Dirigida

Estos primeros ejercicios trate de hacerlos por su cuenta y luego compare su solución con las mostradas en el enlace inferior
de cada pregunta.

La idea es que usted mejore sus "hábitos programativos".

Problema 01M:  Una de las funcionalidades de un proyector multimedia es el “invertir la señal de


video” para que pueda ser ubicada detrás del ecran. Realizar un programa que tenga las siguientes funciones:

invierteHorizontalMatrizCaracter: Función que en una matriz almacena la matriz original invertida de


forma horizontal.

invierteVerticalMatrizCaracter: Función que en una matriz, almacena la matriz original invertida de forma
vertical.
imprimeMatrizCaracter: Función que imprime una matriz cuyos elementos son "0" y "1".
Cuando el elemento es cero (0), debe imprimir espacio en blanco (" ").
Cuando el elemento es uno (1) debe imprimir el caracter ' █ ' (ALT - 219).
En el programa utilizar la matriz del caracter R (13x9)

int tabla [13][9]={{0,0,0,0,0,0,0,0,0},

                         {0,1,1,1,1,1,0,0,0},

                         {0,1,0,0,0,0,1,0,0},

                         {0,1,0,0,0,0,0,1,0},

                         {0,1,0,0,0,0,0,1,0},

                         {0,1,0,0,0,0,1,0,0}, 

                         {0,1,1,1,1,1,0,0,0},

                         {0,1,0,0,0,1,0,0,0},

                         {0,1,0,0,0,0,1,0,0},

                         {0,1,0,0,0,0,1,0,0},

                         {0,1,0,0,0,0,0,1,0},

                         {0,1,0,0,0,0,0,1,0},

                         {0,0,0,0,0,0,0,0,0}};

(Problema tomado en la Quinta Práctica Calificada del semestre 2013-2).

https://univirtual.uni.pe/course/view.php?id=5350&section=14#tabs-tree-start 5/10
6/1/22 23:10 Curso: BMA09O Algoritmos y Estructura de Datos I, Tema: S14: Aplicaciones Arreglos Bidimensionales+PC4

Problema 02M:  En video existe una característica que “engrosar” los caracteres que se visualizan en
la pantalla de video. A dicha característica se le denomina “negrita”.

Una forma de hacerlo es “pintar” el bit siguiente (el que está a la derecha de cada bit que  conforma el
carácter original). 

Se tiene un carácter definido en una matriz de puntos de 13x9:

int tabla [13][9]={{0,0,0,0,0,0,0,0,0},

                         {0,1,1,1,1,1,0,0,0},

                         {0,1,0,0,0,0,1,0,0},

                         {0,1,0,0,0,0,0,1,0},

                         {0,1,0,0,0,0,0,1,0},

                         {0,1,0,0,0,0,1,0,0}, 

                         {0,1,1,1,1,1,0,0,0},

                         {0,1,0,0,0,1,0,0,0},

                         {0,1,0,0,0,0,1,0,0},

                         {0,1,0,0,0,0,1,0,0},

                         {0,1,0,0,0,0,0,1,0},

                         {0,1,0,0,0,0,0,1,0},

                         {0,0,0,0,0,0,0,0,0}};

Se pide un programa que tenga las siguientes funciones:

creaMatrizNegrita: Función que almacena en una matriz, la matriz original en “negrita”.


imprimeMatrizCaracter: Función que imprime una matriz.
(Problema tomado en el Exámen Sustitutorio del semestre 2013-2).

https://univirtual.uni.pe/course/view.php?id=5350&section=14#tabs-tree-start 6/10
6/1/22 23:10 Curso: BMA09O Algoritmos y Estructura de Datos I, Tema: S14: Aplicaciones Arreglos Bidimensionales+PC4

Problema 03M: Se tiene la siguiente gráfica, la cual está representada en una matriz de 13 filas por
9 columnas. Cada cuadrado es un pixel (pixel pintado es “1” y pixel no pintado es “0”)

Se pide:

Crear la matriz.
duplicaFilaMatriz: Función que almacena en una matriz, la matriz original duplicada en cada fila.

duplicaColumnaMatriz: Función que almacena en una matriz, la matriz anterior duplicada en cada columna.

https://univirtual.uni.pe/course/view.php?id=5350&section=14#tabs-tree-start 7/10
6/1/22 23:10 Curso: BMA09O Algoritmos y Estructura de Datos I, Tema: S14: Aplicaciones Arreglos Bidimensionales+PC4

rotaMatrizHorario90: Función que almacena en una matriz, la matriz anterior rotada en  90 grados en
sentido horario.

imprimeMatrizCaracter: Función que imprime una matriz cuyos elementos son "0" y "1".
Cuando el elemento es cero (0), debe imprimir espacio en blanco (" ").
Cuando el elemento es uno (1) debe imprimir el caracter ' █ ' (ALT - 219).
El programa principal debe imprimir: la matriz original, luego la matriz con las filas duplicadas, luego la matriz
con las columnas duplicadas y finalmente la matriz rotada 90 grados en sentido horario.

(Problema tomado en la Tercera Práctica Calificada del semestre 2013-2).

CUARTA PRÁCTICA CALIFICADA

La práctica calificada esta formada por:

Problema 1 de 35 minutos (7 puntos)


Problema 2 de 35 minutos (7 puntos)
Problema 3 de 30 minutos (6 puntos)

La prueba deben rendirla con la cámara encendida en todo momento.

Nombre cada programa son las iniciales de su nombre seguido del número de la pregunta. Ejemplo: JGBB1,
JGBB2, etc.
Solo debe enviar al aulavirtual, el archivo *.c de cada programa.
No debe comprimir el archivo.
La sesión de Zoom no debe tener habilitado la opción de "Fondo de Pantalla".

Cualquiera de los programas enviados que tenga errores de compilación se le evaluará con nota CERO.

https://univirtual.uni.pe/course/view.php?id=5350&section=14#tabs-tree-start 8/10
6/1/22 23:10 Curso: BMA09O Algoritmos y Estructura de Datos I, Tema: S14: Aplicaciones Arreglos Bidimensionales+PC4

PC4-01: Construya un programa que en la función principal declare e inicialice un arreglo unidimensional de N
elementos numéricos randon con valores menores a 9. En una función se debe de almacenar en en la primera
fila de un arreglo bidimensional los datos del arreglo unidimensional y en cada columna se almacenen tantos
asteriscos como lo indique el número. En otra función se deben imprimir ambos arreglos. 

PC4-01

PC4-02: Construya un programa que lea el número de fila y de columna de un arreglo bidimensional, y luego
lo cargue mediante random con caracteres alfabéticos entre d y t. En una tercera funcion debe imprimir el
arreglo original y el arreglo al revés por filas.

PC4-02

PC4-03: Construya un programa que cargue una matriz de N por M elementos, en una función lea un dato
entero menor a 10 y genere un segundo arreglo que contenga todos los elementos del arreglo original de tal
manera que sus filas estén desplazadas tantas veces como lo indique el número leído.

PC4-03

◄S13: Funciones con Arreglos Bidimensionales S15: Cadenas►

https://univirtual.uni.pe/course/view.php?id=5350&section=14#tabs-tree-start 9/10

You might also like