1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
/* * 3x19-Hora_militar_con_registros * 17/11/2011 */ /* * Escribe un programa que acepte una hora en formato militar y la transforme al formato habitual (horas, minutos y AM/PM) y viceversa. Para resolver el problema, usar registros en la definición de los tipos de datos. */ #include <stdio.h> #include <string.h> // Se define un registro llamado "estructura" que contiene las variables enteras h y m, y una cadena ap: struct estructura { int h; // Hora int m; // Minuto char ap[3]; // AM-PM }; int main() { system("clear"); // Del registro definido se crean una subVariables, digamos que "tiempo" hace referencia a una fila, y "h" a una columna. De modo que si tenemos "tiempoDos" tendremos una segunda fila a la que haremos referencia con una columna y en la cual guardaremos un valor del tipo que corresponda. struct estructura tiempo, tiempoDos; // Se define el valor de cada "columna" correspondiente a la "fila" tiempo: tiempo.h = 0; tiempo.m = 0; /* Realizando la introducción carácter a carácter funciona perfecto pero son muchas líneas: tiempo.ap[0] = 'A'; tiempo.ap[1] = 'M'; tiempo.ap[2] = '\0'; tiempoDos.ap[0] = 'P'; tiempoDos.ap[1] = 'M'; tiempoDos.ap[2] = '\0'; */ // Si quisiéramos hacer la introducción como cadena hay muchos problemas, por lo que se ha de usar mejor la función strcpy. strcpy( tiempo.ap, "AM" ); strcpy( tiempoDos.ap, "PM" ); printf("Introduzca una hora en formato militar(24h), ejemplo: 15:42 horas\n\v"); scanf( "%i:%i", &tiempo.h, &tiempo.m ); if( tiempo.h < 0 || tiempo.h > 23 || tiempo.m < 0 || tiempo.m > 59 ) { printf("La hora introducida no es correcta\n\v"); } else { if( tiempo.h <= 12 ) { if( tiempo.m < 10 ) { printf("Son las %i:0%i %s.\n\v", tiempo.h, tiempo.m, tiempo.ap ); } else { printf("Son las %i:%i %s.\n\v", tiempo.h, tiempo.m, tiempo.ap ); }; } else { if( tiempo.m < 10 ) { printf("Son las %i:0%i %s.\n\v", tiempo.h-12, tiempo.m, tiempoDos.ap ); } else { printf("Son las %i:%i %s.\n\v", tiempo.h-12, tiempo.m, tiempoDos.ap ); }; }; }; return 0; }; |