Hemos graficado una matriz de 3 filas y 5 columnas. Para hacer referencia a cada elemento debemos indicar primero la fila y luego la columna, por ejemplo en la componente 1,4 se almacena el valor 97.
En este ejemplo almacenamos valores enteros. Todos los elementos de la matriz deben ser del mismo tipo.
Las filas y columnas comienzan a numerarse a partir de cero, similar a los vectores.
Problema 1:
Crear una matriz de 3 filas por 5 columnas con elementos de tipo int, cargar sus componentes y luego imprimirlas.
Programa: programa114.c
Definimos en la funciĂłn main una matriz.
Para definir una matriz en el lenguaje C debemos disponer como primer subĂndice la cantidad de filas y como segundo subĂndice la cantidad de columnas:
int mat[3][5];
Para cargar sus 15 componentes (cada fila almacena 5 componentes y tenemos 3 filas), lo mĂĄs cĂłmodo es utilizar un for anidado, el primer for que incrementa el contador "f" lo utilizamos para recorrer las filas y el contador interno llamado "c" lo utilizamos para recorrer las columnas.
Cada vez que se repite en forma completa el for interno se carga una fila completa, primero se carga la fila cero en forma completa, luego la fila uno y finalmente la fila 2.
Siempre que accedemos a una posiciĂłn de la matriz debemos disponer dos subĂndices que hagan referencia a la fila y columna mat[f][c]):
void cargar(int mat[3][5]) { int f,c; for(f=0;f<3;f++) { for(c=0;c<5;c++) { printf("Ingrese componente:"); scanf("%i",&mat[f][c]); } } }
Para imprimir la matriz de forma similar utilizamos dos for para acceder a cada elemento de la matriz:
void imprimir(int mat[3][5]) { int f,c; for(f=0;f<3;f++) { for(c=0;c<5;c++) { printf("%i ",mat[f][c]); } printf("\n"); } }
Cada vez que se ejecuta todas las vueltas del for interno tenemos en pantalla una fila completa de la matriz, por eso pasamos a ejecutar un salto de lĂnea (con esto logramos que en pantalla los datos aparezcan en forma matricial):
printf("\n");
Problema 2:
Crear y cargar una matriz de 4 filas por 4 columnas. Imprimir la diagonal principal.
x - - - - x - - - - x - - - - x
Programa:programa115.c
La definiciĂłn de la matriz en la main, su carga e impresiĂłn completa no varĂan con el ejemplo anterior.
Para imprimir la diagonal principal de la matriz lo mĂĄs conveniente es utilizar un for que se repita 4 veces y disponer como subĂndice dicho contador (los elementos de la diagonal principal coinciden los valores de la fila y columna):
void imprimirDiagonalPrincipal(int mat[4][4]) { int k; for(k=0;k<4;k++) { printf("%i ",mat[k][k]); } }
Recordar que si bien es muy comĂșn utilizar dos for para procesar matrices, en muchas situaciones si tenemos que acceder a una sola fila, una sola columna, una diagonal etc. se utilice un solo for o inclusive sin for.
Problema 3:
Crear y cargar una matriz de 3 filas por 4 columnas. Imprimir la primer fila. Imprimir la Ășltima fila e imprimir la primer columna.
Programa: programa116.c
En la funciĂłn main definimos la matriz y se la pasamos a las distintas funciones para procesarla:
int main() { int mat[3][4]; cargar(mat); imprimir(mat); primerFila(mat); ultimaFila(mat); primerColumna(mat); getch(); return 0; }
Luego de cargarla por teclado el primer método que codificamos es el que imprime la primer fila. Disponemos un for para recorrer las columnas, ya que la fila siempre serå la cero. Como son cuatro los elementos de la primer fila el for se repite esta cantidad de veces:
void primerFila(int mat[3][4]) { int c; printf("Primer fila de la matriz:"); for(c=0;c<4;c++) { printf("%i ",mat[0][c]); } printf("\n"); }
Para imprimir la Ășltima fila el algoritmo es similar, disponemos un for que se repita 4 veces y en el subĂndice de la fila disponemos el valor 2 (ya que la matriz tiene 3 filas):
void ultimaFila(int mat[3][4]) { int c; printf("Ultima fila de la matriz:"); for(c=0;c<4;c++) { printf("%i ",mat[2][c]); } printf("\n"); }
Para imprimir la primer columna el for debe repetirse 3 veces ya que la matriz tiene 3 filas. Dejamos constante el subĂndice de la columna con el valor cero:
void primerColumna(int mat[3][4]) { int f; printf("Primer columna:"); for(f=0;f<3;f++) { printf("%i ",mat[f][0]); } }
Problemas propuestos
- Crear una matriz de 2 filas y 5 columnas. Realizar la carga de componentes por columna (es decir primero ingresar toda la primer columna, luego la segunda columna y asĂ sucesivamente) Imprimir luego la matriz.
- Crear una matriz de 3x4. Realizar la carga y luego imprimir el elemento mayor.
- Definir una matriz de 2 filas y 5 columnas. Realizar su carga e impresiĂłn.
Intercambiar los elementos de la primera fila con la segunda y volver a imprimir la matriz.
No hay comentarios:
Publicar un comentario