Está en la página 1de 61

PROGRAMACION DIGITAL - CB412 CICLO 2017-1 1

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
LABORATORIO N° 6
CICLO 2017-I

WILFREDO CUPE ROMÁN


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 2

Laboratorio N° 6
Objetivo

Utilizar arreglos bidimensionales

 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

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 2017-1 5

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 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.

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


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

Entradas Salidas
n Ai j (triangular superior)
Ai j i, j 1..n det
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 7

Fila Pivote i=1 


Solución A1 1 A1 2 ... A1 n 
 
j=2  A A2 2 ... A2 n 
21
Fila Modificada  ... ... ... ... 
 
 An 1 An 2 ... An n 
 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 2017-1 8
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 9
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 10

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

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
LABORATORIO N° 7
CICLO 2017-I

WILFREDO CUPE ROMÁN


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 15

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)

¿La función retorna un valor?


No, las dos respuestas (grados y minutos) son
retornadas en los parámetros pasados por
referencia.
tipo void
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 20

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)

¿La función retorna un valor?


No, las tres respuestas (mayor, fila y columna)
son retornadas en los parámetros pasados por
referencia.
tipo void
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 22

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)

¿La función retorna un valor?


Si, retorna el mayor valor (con return), y las
otras dos respuestas (fila y columna) son
retornadas en los parámetros pasados por
referencia.
tipo int
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 23

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
LABORATORIO N° 8
CICLO 2017-I

WILFREDO CUPE ROMÁN


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 24

Laboratorio N° 8
Objetivos

1. Aplicaciones con funciones


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 25

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.

La función tendrá la siguiente declaración:

float promfinal(int exp,int exf,int exs,float promprac);


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 26

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

16.4 3 15.3 3 16.4

… … … 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

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
LABORATORIO N° 9
CICLO 2017-I

WILFREDO CUPE ROMÁN


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 29

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

Definir una función que devuelva la cantidad de


palabras que contiene una cadena.

Cad: CB412 CICLO 2015-1

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

Frase: Estas fiestas patrias tome con moderación


Primero la frase se guarda en un archivo:
Frase.txt
Estas fiestas pascuas tome con moderación

Luego se lee del archivo palabra por palabra:



while(!feof(a)){
fscanf(a,"%s", cad);
printf("%-20s %d\n",cad, strlen(cad));
}

PROGRAMACION DIGITAL - CB412 CICLO 2017-1 34

Ejercicio3

Definir una función que devuelva la cantidad de


dígitos contenidos en una cadena.

Cad: CB412 CICLO 2015-1

Cad: C B 4 1 2 … 2 0 1 5 - 1 \0
0 1 2 3 4 … … … … n-3 n-2 n-1 n

Rpta:8 dígitos ‘0’<=Cad[i] &&


Cad[i]<=‘9’
n=strlen(cad)
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 35

Ejercicio4

Definir una función que tenga como parámetro un


cadena y que convierta sus letras minúsculas a
mayúsculas.

Cad: Programación Digital

Cad: P r o g r … … g i t a l \0
0 1 2 3 4 … … … … n-3 n-2 n-1 n

Rpta:PROGRAMACIÓN DIGITAL ‘a’<=Cad[i] &&


Cad[i]<=‘z’
n=strlen(cad)
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 36

Tabla de Códigos ASCII


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 37

Solución2
Para la Tabla ASCII Extendida: DEV = ASCII - 256

Caracter ASCII DEV Caracter ASCII


á 160 -96 Á 181
é 130 -126 É 144
í 161 -95 Í 214
ó 162 -94 Ó 224
ú 163 -93 Ú 233
ñ 164 -92 Ñ 165
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 38

Codificación
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 39

Ejercicio4
Un archivo contiene: código, apellidos y nombres, y
promedios de alumnos, por ejemplo:

20111139A DIZA-TERRONES-JUAN DE DIOS 11.9


20134018F MEZA-LEON-EARNEST RICH 14.1
20130051I CHUCOS-BASTIDAS-ERIC BARONI 13.1
20132022F PAUCAR-DIAZ-WILFREDO 12.5
… 32 car.

Definir una función que devuelva los datos del alumno


que tenga la mayor longitud en sus apellidos y
nombres.
El nombre del archivo será parámetro de la función.
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 40

Codificación
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 41

Ejercicios Propuestos

• Dada una cadena leída por teclado, invertir el orden de


las letras de cada palabra.

• Dado un archivo, leer por teclado una cadena y


determinar cuantas veces se repite la cadena en el
archivo.

• Dado un archivo, leer por teclado dos cadenas, buscar la


primera cadena en el archivo y reemplazarla por la
segunda cadena.
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 42

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
LABORATORIO N° 10
CICLO 2017-I

WILFREDO CUPE ROMÁN


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 43

Laboratorio N° 10
Objetivo

1. Utilizar arreglos de cadenas.


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 44

Arreglo de Cadenas

Es un arreglo donde cada elemento es una cadena.

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

Como vector de cadenas


char x[20][30];

x: "" "CB412I" "Ciclo" "2016-1" … …


0 1 2 3 … 19

0 ""
"CB412I"
20 cadenas

1
x2
2 "Ciclo"
3 "2016-1"
… …
19 …
30 car
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 46

Como matriz de caracteres

También se puede representar como una matriz de


caracteres.
char x[20][30];
0 1 2 3 4 5 … 29

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

Lectura del Arreglo de Cadenas ~


Se lee elemento por elemento. Leer
xi

~
Lee hasta encontrar espacio o salto de línea
scanf("%s", x[i]); //por teclado
fscanf(a, "%s", x[i]);//de archivo

Lee hasta encontrar salto de línea


gets(x[i]); //por teclado
fgets(x[i],#caracteres+1,a); //de archivo
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 48

Escritura de Arreglo de Cadenas ~


Se escribe elemento por elemento. Escribir
xi

printf("%s", x[i]); //en pantalla

fprintf(b,"%s", x[i]); //en archivo


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 49

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

Cuando un comprador hace uso del carrito de compras


virtual de la página, se genera un archivo compras.txt,
donde figura el nombre del producto y la cantidad de
unidades a comprar.

Hacer un programa que calcule el monto a pagar de


acuerdo a los productos seleccionados. (Rpta: 127.1)
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 51

Solución

Leer el archivo catalogo.txt y guardar en arreglos la


información:
PROD PRE
1 Camisa formal cuello 16 talla médium 1 35.8
2 Computadora portátil modelo F9518 2 2000
3 Reproductor de música MP3 1Gb 3 55.5
… … … …

Leer del archivo compras.txt cada producto y cantidad,


buscar el producto en el arreglo PROD y calcular la cantidad
por el precio.
Sumar los resultados y dar la respuesta final.
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 52

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
LABORATORIO N° 11
CICLO 2017-I

WILFREDO CUPE ROMÁN


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 53

Laboratorio N° 11
Objetivo
1. Definir un Registro (struct)
2. Utilizar variables tipo Registro
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 54

Estructuras o Registros

Un registro o estructura es un tipo de datos


compuesto por campos.
Los campos permiten almacenar información de
diferente tipo de datos.

Pasos para utilizar Estructuras


1. Definir una estructura (alias y campos)
2. Declarar una variable tipo estructura
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 55

1. Definición de la Estructura
Se puede utilizar el alias para declarar la variable
en otra sentencia.

struct alias{ alias


tipo1 campo1;
tipo2 campo2;
… …
campo1 campo2 …
};
2. Declaración de Variable
struct alias variable;
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 56

Ejemplo
struct datos{ datos
char coda[11];
char ape[40];
int credap;
coda ape credap prom
float prom;
};

struct datos alu1, alu2;


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 57

Acceso a los campos de una Estructura


Para acceder a la información guardada en una
estructura, podemos hacer uso del operador punto:

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

Dos variables estructura del mismo tipo pueden


asignarse directamente.
struct datos alu1, alu2;

alu2=alu1;
Lectura y Escritura
Es campo por campo, utilizando el operador punto.
scanf(“%s”,alu1.coda);
gets(alu1.ape);
scanf(“%d %f”,&alu1.credap, &alu1.prom);
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 59

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
};

struct alumno x[100]; //Arreglo struct


PROGRAMACION DIGITAL - CB412 CICLO 2017-1 61

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
FIN DE LOS LABORATORIOS
CICLO 2017-I

WILFREDO CUPE ROMÁN

También podría gustarte