Форум программистов, компьютерный форум CyberForum.ru

Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning - C++

Восстановить пароль Регистрация
 
sancho1996
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 55
24.06.2013, 14:57     Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning #1
Помогите написать код для этой задачи(на С++):

Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning, если от 12:00-17-59 day, если от 18:00-23:59 evening + защита от "дурака".
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2013, 14:57     Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning
Посмотрите здесь:

C++ пользователь вводит пароль,программа должна его вычислить перебором
пользователь вводит 3 произвольных числа. нужно проверить, составляют ли они геометрическую прогрессию и, если составляют, вывести на экран первые 10 C++
C++ Как ведет себя cin, если пользователь вводит некорректные данные?
Пользователь вводит с клавиатуры 5 чисел. Программа выводит на экран их среднее арифметическое C++
C++ Определить текущий день недели, год, месяц, число, а также текущее время-часы, минуты, секунды, сотые доли секунды.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.06.2013, 15:09     Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning #2
C++
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
#include <iostream>
#include <limits>
 
int main()
{
   unsigned h = 0, m = 0;
   char dummy = 0;
   while (!(std::cin >> h >> dummy >> m) || h > 23
   || dummy != ':' || m > 60)
   {
      std::cout << "Invalid time. Try again" << std::endl;
      std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
      std::cin.clear();
   }
   if (h < 6)
   {
      std::cout << "night" << std::endl;
   }
   else if (h >= 6 && h < 12)
   {
      std::cout << "morning" << std::endl;
   }
   else if (h >= 12 && h < 18)
   {
      std::cout << "day" << std::endl;
   }
   else if (h >= 18)
   {
      std::cout << "evening" << std::endl;
   }
}
sancho1996
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 55
24.06.2013, 15:26  [ТС]     Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning #3
@ForEveR, Спасибо бро, но нету попроще? Можно ли эту задачу решить только используя оператор условия if?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.06.2013, 15:30     Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning #4
@sancho1996, Можно, если валидация подразумевает выход из программы при ошибке ввода. Просто заменить while на if
sancho1996
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 55
24.06.2013, 15:39  [ТС]     Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning #5
Цитата Сообщение от ForEveR Посмотреть сообщение
@sancho1996, Можно, если валидация подразумевает выход из программы при ошибке ввода. Просто заменить while на if
просто понимаешь, мне нужен более простой способ, ну как сказать - для чайника, примитивный.

А так большое спасибо.

Добавлено через 6 минут
@ForEveR, должно быть по проще: Время вводится с клавиатуры часы записываются в одну переменную, минуты в другую. Разделителем является пробел, то есть "13 55" и всё это надо сделать с if
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.06.2013, 15:42     Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning #6
@sancho1996, Это и так делается. Это самый элементарный способ. Единственное, вместо разделителя используется :
Yandex
Объявления
24.06.2013, 15:42     Пользователь вводит текущее время в формате: часы:минута и если 0:00 - 5:59 программа пишет Night, если 6:00-11:59 morning
Ответ Создать тему
Опции темы

Текущее время: 18:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru