Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROGRAMACION DIGITAL
LABORATORIO N° 6
CICLO 2017-I
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 2017-1 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 2017-1 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 2017-1 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 2017-1 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 2017-1 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 2017-1 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 2017-1 12
MATRIZ.TXT EJECUCION
9 3 8 1
8 6 4 5
2 8 5 4
4 2 7 7
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 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 2017-1 14
PROGRAMACION DIGITAL
LABORATORIO N° 7
CICLO 2017-I
Laboratorio N° 7
Objetivos
1. Utilizar funciones
2. Utilizar parámetros pasados por valor y por
referencia
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 16
Ejercicio1
Definir una función que dado un ángulo en grados
y minutos, retorne el ángulo en radianes.
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 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 2017-1 18
Ejercicio2
Definir una función que dado un ángulo en
radianes, retorne el ángulo en grados y minutos.
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 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 2017-1 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 2017-I
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 2017-1 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 2017-1 28
PROGRAMACION DIGITAL
LABORATORIO N° 9
CICLO 2017-I
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 2017-1 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 2017-1 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 2017-1 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 2017-1 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 2017-1 39
Ejercicio4
Un archivo contiene: código, apellidos y nombres, y
promedios de alumnos, por ejemplo:
Codificación
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 41
Ejercicios Propuestos
PROGRAMACION DIGITAL
LABORATORIO N° 10
CICLO 2017-I
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 2017-1 45
0 ""
"CB412I"
20 cadenas
1
x2
2 "Ciclo"
3 "2016-1"
… …
19 …
30 car
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 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 2017-1 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 2017-1 50
Solución
PROGRAMACION DIGITAL
LABORATORIO N° 11
CICLO 2017-I
Laboratorio N° 11
Objetivo
1. Definir un Registro (struct)
2. Utilizar variables tipo Registro
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 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 2017-1 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 2017-1 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 2017-I