Перевод времени из 24-часового формата в 12-й - C (СИ) (150315)
Формулировка задачи:
Пользователь вводит время в формате 24-х часов, программа переводит в 12-х часов. Помогите допилить.
Неправильно пишет в scanf и соответственно не хочет переводить поэтому
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus");
struct time
{
int hour;
int minute;
int second;
};
time t1;
printf("Введите время:(через точку)\n");
scanf("%d.%d.%d", &t1.hour, &t1.minute, &t1.second);
if (t1.hour < 12)
{
printf("%d.%d.%d am", t1.hour, t1.minute, t1.second);
}
if (t1.hour>12)
{
printf("%d.%d.%d pm", (t1.hour-12), t1.minute, t1.second);
}
return 0;
}Решение задачи: «Перевод времени из 24-часового формата в 12-й»
textual
Листинг программы
#define TIME() if(t1.hour < 12){printf("%d.%d.%d am\n", t1.hour, t1.minute, t1.second);}if (t1.hour>12){ printf("%d.%d.%d pm\n", (t1.hour - 12), t1.minute, t1.second);}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus");
struct time
{
int hour;
int minute;
int second;
};
struct time t1;
printf("Введите время:(через точку)\n");
scanf("%d.%d.%d", &t1.hour, &t1.minute, &t1.second);
TIME();
return 0;
}
Объяснение кода листинга программы
- Объявлен макрос TIME.
- Если t1.hour меньше 12, то выводится время в формате am.
- Если t1.hour больше или равно 12, то выводится время в формате pm.
- Для времени после 12 часов из часа вычитается 12.
- Объявлена структура time.
- Объявлен экземпляр структуры time t1.
- Выводится приглашение для ввода времени.
- С помощью функции scanf вводятся значения дляhour, minute и second и сохраняются в соответствующих полях структуры t1.
- Вызывается макрос TIME.
- Программа возвращает 0, завершая свою работу.