Guest User

Untitled

a guest
May 10th, 2013
156
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //http://www.hackxcrack.es/forum/index.php?topic=18960.0
  2. //cualquier comentario es bueno (:
  3.  
  4. #include <stdio.h>
  5.  
  6. int revisar_periodo(char *periodo);
  7. void calcular(int actual_h,int actual_m,int agregar_h,int agregar_m); //funcion que calculara la hora.
  8.  
  9. int main(){
  10.    int h_actual,m_actual; //hora y minutos actuales.
  11.    int agregar_h,agregar_m; //perdon por los nombres largos
  12.    char periodo[10];
  13.  
  14.    do{
  15.       printf("Hora actual: ");
  16.       scanf("%d",&h_actual);
  17.       printf("Minutos: ");
  18.       scanf("%d",&m_actual);
  19.       if(h_actual > 23 || m_actual > 59)
  20.          printf("\n\nHora o minutos incorrectos\n\n");
  21.    }while(h_actual > 23 || m_actual > 59);
  22.  
  23.  
  24.    if(h_actual <= 12){            //si la hora es mayor a 12 hrs no tiene caso pedir am o pm
  25.       do{
  26.          printf("am o pm? ");
  27.          scanf("%s",&periodo);
  28.  
  29.          if((periodo[0] != 'a' && periodo[0] != 'p') || periodo[1] != 'm')
  30.             printf("\n\n%s no es valido\n\n",periodo);
  31.  
  32.       }while((periodo[0] != 'a' && periodo[0] != 'p') || periodo[1] != 'm');  // si los caracteres que introdujo no son "am" o "pm" vuelve a pedir
  33.       h_actual += revisar_periodo(periodo);  // en revisar periodo se le sumara 12 o 0
  34.    }
  35.  
  36.    printf("Horas a agregar: ");
  37.    scanf("%d",&agregar_h);
  38.    printf("Minutos a agregar: ");
  39.    scanf("%d",&agregar_m);
  40.  
  41.    calcular(h_actual,m_actual,agregar_h,agregar_m); //calcula e imprime la hora que se desea
  42.    getchar();
  43.    getchar();
  44.    return 0;
  45.  
  46. }
  47.  
  48. int revisar_periodo(char *periodo){
  49.    if(periodo[0]=='a' && periodo[1] == 'm') return 0; //suma 0 a la hora actual
  50.    if(periodo[0]=='p' && periodo[1] == 'm') return 12; //suma 12 a la hora actual
  51. }
  52.  
  53. void calcular(int actual_h,int actual_m,int agregar_h,int agregar_m){
  54.    int hora,minutos;
  55.    char periodo[2][3] = {"am","pm"};
  56.    hora = ((actual_h + agregar_h) % 24) + ((actual_m + agregar_m)/60);
  57.    minutos = (actual_m + agregar_m) % 60;
  58.  
  59.    printf("\n\nEn %d horas y %d minutos seran las: %d:%d %s",agregar_h,agregar_m,hora%12,minutos,periodo[hora/12]);
  60. }
RAW Paste Data