Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problema con formato !!!

Estas en el tema de Problema con formato !!! en el foro de C/C++ en Foros del Web. Bueno tengo el siguiente problema en C: 1) Escribir un programa que lea la hora de un día de notación de 24 horas y la ...
  #1 (permalink)  
Antiguo 18/09/2010, 20:24
 
Fecha de Ingreso: abril-2010
Mensajes: 14
Antigüedad: 14 años
Puntos: 0
Problema con formato !!!

Bueno tengo el siguiente problema en C:

1) Escribir un programa que lea la hora de un día de notación de 24 horas y la respuesta en notación de 12 horas. Por ejemplo, si la entrada es 13:45, la salida será 1:45 PM. El programa pedirá al usuario que introduzca exactamente cinco caracteres. Así por ejemplo, las nueve en punto se introduce como 09:00.

lo de menos es convertirlo de 24 hrs a 12 jeje lo que no puedo hacer es que el usuario a fuerza de el formato de hh:mm con 5 caracteres
miren les pongo lo que llevo :

Código C:
Ver original
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. int main()
  5. {
  6.     char hora[5];
  7.     printf("Introduce la hora: ");
  8.     scanf("%s",hora);
  9.     if(strlen(hora)!=5)
  10.     printf("Debes Introducir 5 caracteres con este formato hh:mm \n");
  11.     else
  12.     printf("%s \n",hora);
  13.     system("pause");
  14.     return 0;
  15. }

MI idea es tomar los 2 primeros caracteres de la cadena y convertirlos a numero y comparar que el tercer caracter sean los dos puntos ":" pero no se como hacerlo ojala puedan ayudarme

Última edición por rotsen24154; 18/09/2010 a las 20:48
  #2 (permalink)  
Antiguo 18/09/2010, 20:54
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Problema con formato !!!

bueno amigo para dividir cadenas estube buscando y esta este comando strtok tiene un ejemplo espero te sirva luego de separarla solo es cuestion de comparacion suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 18/09/2010, 23:48
 
Fecha de Ingreso: abril-2010
Mensajes: 14
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con formato !!!

Cita:
Iniciado por carlos_belisario Ver Mensaje
bueno amigo para dividir cadenas estube buscando y esta este comando [URL="http://manuales.gfc.edu.co/php/es/function.strtok.html"]strtok[/URL] tiene un ejemplo espero te sirva luego de separarla solo es cuestion de comparacion suerte
Oh muchas gracias creo que si me va a servir ahorita acabo de hacerlo y si me queda lo subo por si alguien tiene el mismo problema ;)
  #4 (permalink)  
Antiguo 19/09/2010, 01:18
 
Fecha de Ingreso: abril-2010
Mensajes: 14
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con formato !!!

Ya pude jeje aqui lo dejo por si a alguien se le ofrece
Código C:
Ver original
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. int main()
  5. {
  6.     char hora[5], aux[5], * pch, * pch1;
  7.     int hor,min;
  8.     printf("Introduce la hora: ");
  9.     scanf("%s",hora);
  10.     strcpy (aux, hora); // Copia el contenido de hora para poder hacer la comparacion
  11.     pch = strtok (hora,":"); //Separa la cadena en los elementos antes de :
  12.     pch1 = strtok (NULL,":"); //Separa la cadena en los elementos despues de :
  13.     hor=atoi(pch);//cambia de char a int
  14.     min=atoi(pch1);//cambia de char a int
  15.     if (strlen(aux)!=5 && pch==NULL || pch1==NULL)
  16.     {
  17.        printf("Debes introducir la hora con el siguiete formato hh:mm con 5 caracteres\n");
  18.        system("pause");
  19.        exit (0);
  20.     }
  21.     else
  22.         if (hor>=0 && hor<=24 && min>=0 && min<60)
  23.            if (hor<=12)
  24.            {
  25.               hor=hor;
  26.               printf("Las %s es igual a %d:%s \n",aux,hor,pch1);
  27.            }
  28.            else
  29.            {
  30.                hor-=12;
  31.                hor=hor;
  32.                printf("Las %s es igual a %d:%s \n",aux,hor,pch1);
  33.            }
  34.         else
  35.         {
  36.             printf("La hora esta mal\n");
  37.             system("pause");
  38.             exit (0);
  39.         }      
  40.     system("pause");
  41.     return 0;
  42. }

Última edición por rotsen24154; 26/02/2016 a las 20:16

Etiquetas: formato
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:13.