Академический Документы
Профессиональный Документы
Культура Документы
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL
PROGRAMACION DIGITAL
LABORATORIO N° 7
CICLO 2015-1
Laboratorio N°7
Objetivo
X 11 X1 2 ... X 1 n
X 21 X22 ... X 2 n
X
... ... ... ...
X Xn2 ... X n n
n1 n*n
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 106
Arreglo Bidimensional
Declaración:
tipo matriz[N°filas][N°columnas];
Ejemplo:
int x[20][30];
col 0 col 1 col 2 … col 29
fila 0 X0 0 X0 1 X0 2 … X0 29
fila 1 X1 0 X1 1 X1 2 … X1 29 20
… … … … … … filas
fila 19
X19 0 X19 1 X19 2 … X19 29
30 columnas
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 107
scanf("formato",&matriz[#fila][#col]);
fscanf(file,"formato",&matriz[#fila][#col]);
Ejemplo:
scanf("%d", &x[i][j]); Leer
xi j
fscanf(file,"%d", &x[i][j]);
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 108
printf("formato",matriz[#fila][#col]);
fprintf(file,"formato",matriz[#fila][#col]);
Ejemplo:
printf("%d", x[i][j]); Escribir
xi j
fprintf(file,"%d", x[i][j]);
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 109
Ejercicio1
Dada la matriz A de n*n, se pide convertirla a
triangular superior mediante operaciones elementales
por filas y luego calcular su determinante.
Entradas Salidas
n Ai j (triangular superior)
Ai j i, j 1..n det
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 110
Solución A1 1 A1 2 ... A1 n
Fila Pivote i=1
j=2 A A2 2 ... A2 n
21
Fila Modificada ... ... ... ...
A An 2 ... An n
n1 n* n
Triangular superior:
Fila Pivote i 1..n‐1
Fila Modificada j i+1..n
c = ‐Aji/Aii , Aii 0
Filaj Filaj + c*Filai
Determinante:
n
Det Aii
i 1
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 111
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 112
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 113
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 114
Ejercicio2
Un archivo contiene una matriz cuadrada, se pide
ordenar de menor a mayor los elementos de su
diagonal principal. El orden de la matriz no es dato.
X 11 X 1 2 ... X 1 n
X 21 X 2 2 ... X 2 n
X
... ... ... ...
X ?1 X ? 2 ... X ? ?
?*?
Entradas Salida
Xi j i, j 1..? Xi j (diagonal ordenada)
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 115
#include<stdio.h>
#include<math.h>
int main(){
int x[50][50],z[100],i,n,j,t; FILE *a;
a=fopen("MATRIZ.TXT","r");
for(i=1;!feof(a);i++) fscanf(a,"%d ",&z[i]);
fclose(a); n=sqrt(i‐1);
for(i=1;i<=n*n;i++)
x[(i‐1)/n+1][i‐(i‐1)/n*n]=z[i]; //Division Entera
//Burbuja
for(i=1;i<n;i++)
for(j=1;j<=n‐i;j++)
if(x[j][j]>x[j+1][j+1]){
t=x[j][j]; x[j][j]=x[j+1][j+1]; x[j+1][j+1]=t;
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++) printf("%4d",x[i][j]);
printf("\n");
}
}
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 116
MATRIZ.TXT EJECUCION
9 3 8 1
8 6 4 5
2 8 5 4
4 2 7 7
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 117
Ejercicio Propuesto
Dada la solución del juego “Sudoku” que está almacenado
en un archivo de texto SUDOKU.SOL, se desea escribir un
programa que verifique si la solución es correcta
mostrando por pantalla los siguientes mensajes: “Sudoku
Correcto” o “Sudoku Incorrecto”.
Ejemplo:
Se muestra una solución
correcta del juego “Sudoku”,
los números están
almacenados en el archivo
indicado separados por
espacios en 9 filas x 9
columnas.