Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROGRAMACION DIGITAL
LABORATORIO N° 6
CICLO 2016-II
Laboratorio N° 6
Objetivo
X 11 X12 ... X 1 n
X 21 X22 ... X 2 n
X
... ... ... ...
X n1 Xn2 ... X n n
n*n
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 3
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 2016-2 4
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 2016-2 5
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 2016-2 6
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 2016-2 7
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 X1 2 ... X 1 n
X 21 X22 ... X 2 n
X
... ... ... ...
X ?1 X?2 ... X ? ?
?*?
Entradas Salida
Xi j i, j 1..? Xi j (diagonal ordenada)
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 11
#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 2016-2 12
MATRIZ.TXT EJECUCION
9 3 8 1
8 6 4 5
2 8 5 4
4 2 7 7
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 13
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.
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 14
PROGRAMACION DIGITAL
LABORATORIO N° 7
CICLO 2016-II
Laboratorio N° 7
Objetivos
1. Utilizar funciones
2. Utilizar parámetros pasados por valor y por
referencia
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 16
Ejercicio1
Definir una función que dado un ángulo en grados
y minutos, retorne el ángulo en radianes.
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 17
Planteamiento
¿Que parámetros necesita la función?
grad por valor (int)
min por valor (int)
¿La función retorna un valor?
Si, retorna el ángulo en radianes (con return).
tipo float
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 18
Ejercicio2
Definir una función que dado un ángulo en
radianes, retorne el ángulo en grados y minutos.
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 19
Planteamiento
¿Que parámetros necesita la función?
angulo por valor (float)
grad por referencia (int)
min por referencia (int)
Ejercicio3
Dada una matriz cuadrada A de orden n y de tipo
entero, definir una función que retorne el mayor
valor de toda la matriz y la fila y columna en la
que se encuentra.
9 3 8 1
Mayor = 15
2 8 5 4 Fila =4
8 6 10 0 Columna =2
7 15 3 5
4 * 4
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 21
Planteamiento1
¿Que parámetros necesita la función?
A (matriz) por referencia (int)
n (orden) por valor (int)
mayor por referencia (int)
fila por referencia (int)
columna por referencia (int)
Planteamiento2
¿Que parámetros necesita la función?
A (matriz) por referencia (int)
n (orden) por valor (int)
fila por referencia (int)
columna por referencia (int)
PROGRAMACION DIGITAL
LABORATORIO N° 8
CICLO 2016-II
Laboratorio N° 8
Objetivos
Ejercicio 1
Escribir una función que devuelva el valor del promedio final de
CB412. Para el cálculo del promedio se contará con las notas de
exámenes y promedio de prácticas (diferente a cero).
Si el valor de algún examen es 99 significa ausente.
Ejercicio 2
Definir una función que inserte un valor v en un
arreglo lineal x de n elementos.
El arreglo x ya está ordenado.
x x
1 18.7 1 18.7
v 2 17.9 2 17.9
… … … 15.3
n 05.6 n …
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 27
Ejercicio 3
Escribir una función que pida por teclado una contraseña
numérica de ocho cifras para compararla con la correcta y que
permita tres intentos como máximo.
Si el usuario logra ingresar la contraseña correcta, la función
devolverá el número del intento en que ha acertado; en caso
contrario, la función devolverá cero.
Comparar cada contraseña ingresada por el usuario con la
contraseña correcta que está contenida en el archivo
PASSWORD.TXT.
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 28
PROGRAMACION DIGITAL
LABORATORIO N° 9
CICLO 2016-II
Laboratorio N° 9
Objetivo
1. Utilizar cadenas de caracteres.
2. Utilizar funciones de la libreria string.h :
• strlen
• strcpy
• strcat
• strcmp
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 30
Funciones de Cadenas
Se debe incluir en el programa: #include<string.h>
Función Descripción
strlen(cad) Retorna la longitud de cad.
No se cuenta el nulo.
strcpy(cad1, cad2) Copia cad2 en cad1.
strcat(cad1, cad2) Une cad1 con cad2.
strcmp(cad1, cad2) Compara cad1 con cad2.
<0 si cad1<cad2
Retorna =0 si cad1=cad2
>0 si cad1>cad2
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 31
Ejercicio1
Cad: C B … 2 C … O 2 … 1 \0
0 1 … 4 5 6 … 10 11 12 … n-1 n
Rpta:3 palabras
Cad[i]==‘ ’
n=strlen(cad)
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 32
Ejercicio2
Definir una función que muestre en pantalla cada
palabra de una frase seguida del número de letras que
la componen. Por ejemplo:
Frase: Estas fiestas patrias tome con moderación
Se mostraría:
Estas 5
fiestas 7
pascuas 7
tome 4
con 3
moderación 10
20 car.
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 33
Solución2
Ejercicio3
Cad: C B 4 1 2 … 2 0 1 5 - 1 \0
0 1 2 3 4 … … … … n-3 n-2 n-1 n
Ejercicio4
Cad: P r o g r … … g i t a l \0
0 1 2 3 4 … … … … n-3 n-2 n-1 n
Solución2
Para la Tabla ASCII Extendida: DEV = ASCII - 256
Codificación
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 39
Ejercicio4
Un archivo contiene: código, apellidos y nombres, y
promedios de alumnos, por ejemplo:
Codificación
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 41
Ejercicios Propuestos
PROGRAMACION DIGITAL
LABORATORIO N° 10
CICLO 2016-II
Laboratorio N° 10
Objetivo
Arreglo de Cadenas
Declaración:
char arreglo[#fil][#col]
Donde:
#fil = nro. de filas o nro. de cadenas.
#col = nro. de columnas o nro. de caracteres
de las cadenas.
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 45
0 ""
"CB412I"
20 cadenas
1
x2
2 "Ciclo"
3 "2016-1"
… …
19 …
30 car
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 46
0 "" 0 \0
1 "CB412I" 1 C B 4 1 2 I \0
2 "Ciclo" x2
2 C i c l o \0
3 "2016-1" 3 2 0 1 5 - 2 \0
… … …
19 … 19
30 car x2,4
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 47
~
Lee hasta encontrar espacio o salto de línea
scanf("%s", x[i]); //por teclado
fscanf(a, "%s", x[i]);//de archivo
Ejercicio
Una tienda de compras por Internet tiene el resumen de
todos los productos en el archivo catalogo.txt, donde
figura el nombre y costo de cada producto.
Ejemplo:
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 50
Solución
PROGRAMACION DIGITAL
LABORATORIO N° 11
CICLO 2016-II
Laboratorio N° 11
Objetivo
1. Definir un Registro (struct)
2. Utilizar variables tipo Registro
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 54
Estructuras o Registros
1. Definición de la Estructura
Se puede utilizar el alias para declarar la variable
en otra sentencia.
Ejemplo
struct datos{ datos
char coda[11];
char ape[40];
int credap;
coda ape credap prom
float prom;
};
variable.campo
Ejemplos:
strcpy(alu1.coda, “20130001A”);
strcpy(alu1.ape, “Perez-Manuel”);
alu1.credap=100;
alu1.prom=15.6;
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 58
Asignación directa
Ejercicio Propuesto
Un archivo contiene la siguiente información: apellidos y
nombres, examen parcial, final y promedio de prácticas.
Utilizando variables tipo struct, leer el archivo y mostrar
en pantalla la información de los alumnos en orden de
mérito.
35 car.
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 60
Solución
struct alumno{ alumno
char ape[40];
int exp,exf;
float pp,pf;
ape exp exf pp pf
};
PROGRAMACION DIGITAL
FIN DE LOS LABORATORIOS
CICLO 2016-II