programa para convertir hora 12/24

Iniciado por RAGMANINOV, 2 Noviembre 2016, 12:29 PM

0 Miembros y 3 Visitantes están viendo este tema.

RAGMANINOV

Hola a todos recien estoy aprendiendo a programar en lenguaje c y me dejaron algunas practicas en las que me encuentro atorado en una que me pide introducir la hora en formato de 24 horas en cinco caracteres (hh:mm) y la imprima en formato de 12 horas, con igual 5 caracteres mas el AM o PM (hh:mm AM/PM), pues ya tengo un programa que lo hace pero necesita que la hora se introduzca con un punto entre hora y minuto (hh.mm) en vez de con dos puntos, no se como hacer que salga con 2 puntos, toda vez que intento colocarlos me da error y no compila, aca el codigo que tengo:

#include <stdio.h>
#include <stdlib.h>

int main (void)

{
   
float hora,hour;

printf ("escriba la hora en formato de 24 hora solo cinco caracteres (hh.mm): ");
scanf ("%f",&hora);

if (hora<12.00)
    {
    printf ("la hora es: %.2f AM",hora);  
    }
else
    {
    hour=hora-12;
    printf ("la hora es: %.2f PM",hour);
    }

return (0);

}


MOD: Etiquetas GeSHi., Los titulos deben ser descriptivos a la temática

ivancea96

Cita de: RAGMANINOV en  2 Noviembre 2016, 12:29 PM
Hola a todos recien estoy aprendiendo a programar en lenguaje c y me dejaron algunas practicas en las que me encuentro atorado en una que me pide introducir la hora en formato de 24 horas en cinco caracteres (hh:mm) y la imprima en formato de 12 horas, con igual 5 caracteres mas el AM o PM (hh:mm AM/PM), pues ya tengo un programa que lo hace pero necesita que la hora se introduzca con un punto entre hora y minuto (hh.mm) en vez de con dos puntos, no se como hacer que salga con 2 puntos, toda vez que intento colocarlos me da error y no compila, aca el codigo que tengo:

#include <stdio.h>
#include <stdlib.h>

int main (void)

{
   
float hora,hour;

printf ("escriba la hora en formato de 24 hora solo cinco caracteres (hh.mm): ");
scanf ("%f",&hora);

if (hora<12.00)
     {
     printf ("la hora es: %.2f AM",hora); 
     }
else
     {
     hour=hora-12;
     printf ("la hora es: %.2f PM",hour);
     }

return (0);

}


MOD: Etiquetas GeSHi.

"Me da error y no compila" no es una opción. Lee el error, y si no lo entiendes, ponlo por aquí.

Si ya lo hiciste con ':', pon ese código aquí. El cambio es mínimo.

engel lex

Cita de: ivancea96 en  2 Noviembre 2016, 16:51 PM
"Me da error y no compila" no es una opción. Lee el error, y si no lo entiendes, ponlo por aquí.


reafirmo la opinión de ivancea96... coloca el error, sin eso no se sabe... porque ese código está bien y funciona
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MAFUS

En vez de capturar un float haz que se capturen dos enteros y un carácter en medio de ellos.

engel lex

Cita de: MAFUS en  2 Noviembre 2016, 17:17 PM
En vez de capturar un float haz que se capturen dos enteros y un carácter en medio de ellos.

Con que fin? Si capturar un float funciona bien y resuelve el problema? Por otro lado, eso no  causa un error de compilación
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MAFUS

Con un punto no es un problema pero con los dos puntos, que es la forma con la que lo quiere hacer sí.
Capturar, de igual forma, una hora con un float, tampoco lo veo práctico si llegara el caso de tener que realizar operaciones matemáticas sobre los minutos y acomodar las horas después.

engel lex

Rayos creo que necesito lentes! No vi eso! Cierto! La mejor manera es la que indicas  ;)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

marrison

Además a la hora de caputrar un float es normal que sólo te deje con un punto, pues los float van separados por uno, no por dos puntos.

Como dice el compañero captura un entero, un carácter y después otro entero.
"Es genial trabajar con ordenadores. No discuten, lo recuerdan todo y no se beben tu cerveza" (Paul Leary)

"Controlar la complejidad es la esencia de la programación" (Brian Kernigan)

"Primero resuelve el problema. Entonces, escribe el código" (John Johnson)

"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)

RAGMANINOV

Cita de: MAFUS en  2 Noviembre 2016, 17:17 PM
En vez de capturar un float haz que se capturen dos enteros y un carácter en medio de ellos.

Cita de: engel lex en  2 Noviembre 2016, 20:52 PM
Rayos creo que necesito lentes! No vi eso! Cierto! La mejor manera es la que indicas  ;)

Cita de: marrison en  3 Noviembre 2016, 18:57 PM
Además a la hora de caputrar un float es normal que sólo te deje con un punto, pues los float van separados por uno, no por dos puntos.

Como dice el compañero captura un entero, un carácter y después otro entero.

Muchas gracias a todos, esa era la solucion como dijo el compañero MAFUS, dejo el codigo por si a alguien le es de utilidad, saludos!

#include <stdio.h>
#include <stdlib.h>

int main (void)

{
   
int hora,hour, min;

printf ("escriba la hora y minutos en formato de 24 hrs. como hh:mm ( 5 caracteres): ");
scanf ("%d:%d",&hora,&min);

if (hora<12)
     {
     printf ("la hora es: %d:%d AM",hora, min); 
     }
else
     {
     hour=hora-12;
     printf ("la hora es: %d:%d PM",hour, min);
     }

return (0);

}