Upload
boris-seminario
View
14
Download
2
Embed Size (px)
Citation preview
boris seminario
CB-411 O: Tarea 3
Alumno: Boris Hermes Seminario Arista
Código: 20141076H
Profesor: Arturo Vilca Román
Profesor: Arturo Vilca Román141076H
Profesor: Arturo Vilca Román
CB-411: TAREA 3
1. SIZEOF Escriba un programa que usa el operador sizeof para determinar el tamaño en bytes de los diversos tipos de datos en su sistema de computadora. Escriba los resultados al archivo “datos.txt” usando el formato: tipo de dato - tamaño en bytes.
1.a Pseudocódigo – diagrama de flujo
El operador sizeof se aplica a las variables o tipos de datos para obtener
el espacio de almacenamiento que ocupan en bytes (8 bits).
CB-411: TAREA 3
1.b Código fuente en C
1 #include<stdio.h>
2
3 int main()
4 {
5 FILE* fichero;
6
7 fichero = fopen("datos.txt","w");//abre el fichero para escribir en el
8 fprintf(fichero, "Tipo de dato | Tamanio en bytes");
9 fprintf(fichero, "\n_______________________________ ");
10 fprintf(fichero,"\nInt | %d", sizeof(int));
11 fprintf(fichero,"\nfloat | %d", sizeof(float));
12 fprintf(fichero,"\ndouble | %d", sizeof(double));
13 fprintf(fichero,"\nchar | %d", sizeof(char));
14 fprintf(fichero,"\nlong | %d", sizeof(long));
15
16 fclose(fichero);//cierra el fichero para su posterior uso
17
18 return 0;
19 }
Este código ha sido subido a GitHub para estar disponible para su revisión:
https://github.com/coolbdev/CB411/blob/master/SizeOff.c
CB-411: TAREA 3
1.c Muestra de las salidas obtenidas
A continuación, se muestra la salida del programa en una terminal UNIX, ya que
en el IDE de NetBeans no se puede apreciar la creación del archivo de texto.
El compilador es el estándar : GCC.
CB-411: TAREA 3
2.Tiempo
Escribir un programa que permita calcular la diferencia entre dos tiempos t1 y t2 usando una estructura llamada Tiempo que contenga los datos de hora, minuto y segundo.
2.b Pseudocódigo – diagrama de flujo
En este programa se pide la diferencia entre dos tiempos, t1: hora de inicio y t2:
hora de fin dados en el formato HH/MM/SS y 24 horas; se debe entregar los resultados
en el mismo formato.
El algoritmo para este programa es el de la lectura de los datos y la diferencia
de los tiempos, como se implementarán como funciones o sub-programas, se
presentan a continuación dos diagramas de flujo para dichos propósitos, y luego se
implementará en un diagrama de flujo para la función principal.
CB-411: TAREA 3
1.b Código fuente en C
En el siguiente código se utilizan funciones de tipo de dato struct, con
parámetros struct, por lo que la función devolverá un dato de este tipo que será
asignado a una variable del mismo tipo de estructura cuando se utilice.
1 #include<stdio.h>
2 struct Tiempo
3 {
4 int hora;
5 int minuto;
6 int segundo;
7 };
8 typedef struct Tiempo tiempo;
9 /*Se usa typedef para utilizar la declaracion tiempo
10 en lugar de struct Tiempo*/
11 tiempo leerTiempo();
12
13 tiempo diferenciaTiempo(tiempo, tiempo);
14
15 int main()
16 {
17 tiempo Ti;
18 tiempo Tf;
19 tiempo intervalo;
20 do{
21 printf("\nIngrese los tiempos en el formato de 24 horas\n");
22 printf("\n*************************************\n");
23 printf("Ingrese el tiempo de inicio\n");
24 Ti=leerTiempo();
25
26 printf("\nIngrese el tiempo de finalizacion\n");
27 Tf=leerTiempo();
28
29 intervalo = diferenciaTiempo(Tf, Ti);
30 printf("\n*************************************\n");
31 if(intervalo.hora < 0)
32 {
33 printf("Datos incorrectos\n");
34 intervalo.hora=-1;
CB-411: TAREA 3
35 }
36
37 else
38 printf("%d | %d | %d\n", intervalo.hora, intervalo.minuto, intervalo.segundo);
39 }while(intervalo.hora < 0 );
40
41
42 return 0;
43 }
44
45 //Funcion de tipo struct que devuelve una estructura
46 tiempo leerTiempo()
47 {
48 tiempo x;
49
50 do{
51 printf("Hora: " );
52 scanf("%d",&x.hora);
53 }while(x.hora>=24||x.hora<0);
54
55 do{
56 printf("Minuto: ");
57 scanf("%d",&x.minuto);
58 }while(x.minuto<0 || x.minuto>=60);
59 do{
60 printf("Segundo:");
61 scanf("%d",&x.segundo);
62 }while(x.segundo<0 || x.segundo>=60);
63 return x;
64 }
65
66 //Función que devuelve la diferencia de los tiempos en forma de estructura
67 tiempo diferenciaTiempo(tiempo y, tiempo z)
68 {
69 int Tf, Ti, T;
70 tiempo diferencia;
71
72 Tf = y.hora*3600 + y.minuto*60 + y.segundo;
73 Ti = z.hora*3600 + z.minuto*60 + z.segundo;
74 T= Tf - Ti;
CB-411: TAREA 3
75 diferencia.hora = T/3600;
76 T = T%3600;
77 diferencia.minuto = T/60;
78 T = T%60;
79 diferencia.segundo = T;
80 return diferencia;
81 }
Este código ha sido subido a GitHub para estar disponible para su revisión:
https://github.com/coolbdev/CB411/blob/master/tiempo.c
CB-411: TAREA 3
2.c Muestra de las salidas obtenidas
Las pruebas para las salidas del programa son diversas, ya que se ingresan datos,
se verifica que estos sean correctos, luego se realizan los cálculos y se imprimen los
resultados.
Ingreso de datos fácilmente calculables
Probando las restricciones a los datos ingresados para los tiempos
CB-411: TAREA 3
Valores correctos y salida
Valores de tiempos incompatibles con el propósito del programa
CB-411: TAREA 3
3.Agenda
Escriba un programa que defina una estructura de datos llamada Agenda que
contenga como información el nombre, dirección, teléfono y correo electrónico de una
persona en forma de lista enlazada.
Agregue funcionalidades para agregar y quitar registros de la agenda así como
para consultar los datos por nombre.
3.a Pseudocódigo o diagrama de flujo
Este programa hará uso de una estructura de datos llamada lista enlazada
simple y funciones que ejecutarán operaciones propias de la manipulación de este
tipo de estructura.
En este caso, para representar el algoritmo, es más útil el uso de pseudocódigo
orientado a programación estructurada, además se facilita la comprensión de este con
las representaciones mostradas a continuación.