Вы находитесь на странице: 1из 14

PROGRAMACION DIGITAL - CB412 CICLO 2015-1 104

UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL 

PROGRAMACION DIGITAL
LABORATORIO N° 7
CICLO 2015-1

WILFREDO CUPE ROMÁN


PROGRAMACION DIGITAL - CB412 CICLO 2015-1 105

Laboratorio N°7
Objetivo

Utilizar arreglos bidimensionales

 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

Lectura de Arreglo Bidimensional

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

Escritura de Arreglo Bidimensional

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.

 A11 A1 2 ... A1 n   A11 A1 2 ... A1 n 


   
 A2 1 A2 2 ... A2 n   0 A2 2 ... A2 n 
 ...  
... ... ...  ... ... ... ... 
   
A An 2 ... An n   0 0 ... An n 
 n1 n*n  n*n

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.

Вам также может понравиться