tarea3 informatica

14
CB-411 O: Tarea 3 Alumno: Boris Hermes Seminario Arista Código: 20141076H Profesor: Arturo Vilca Román Profesor: Arturo Vilca Román141076H

Upload: boris-seminario

Post on 12-Apr-2017

15 views

Category:

Software


2 download

TRANSCRIPT

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

CB-411: TAREA 3

CB-411: TAREA 3

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.