Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
1

Распарсить время суток по часам.

27.10.2009, 22:57. Показов 3719. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вводим время в формате hh:mm в зависимости от того утро, день, вечер или ночь выводим приветственное сообщение доброе утро, добрый день, добрый вечер...
Помогите сделать плз
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2009, 22:57
Ответы с готовыми решениями:

С клавиатуры вводится час суток Т [1;24]. Определить время суток по введенному часу
Помогите пожалуйста решить. С клавиатуры вводится час суток Т . Определить время суток по...

Написать программу анализирующую лог файл сервера apache, рассчитывающую увеличение нагрузки на сервере по часам суток
Ребят, помогите, мозг уже пухнет. Написать программу анализирующую лог файл сервера apache,...

Ввести время в часах и определить время суток (ночь, утро, день, вечер)
2) Ввести время в часах. Определить время суток (ночь, утро, день, вечер) .

Задается время суток. Определить, какой цвет светофора будет гореть в это время
1. Задается время суток. Определить, какой цвет светофора будет гореть в это время. 2. Дан номер...

12
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
27.10.2009, 23:00 2
ByHbKa, а в чем пробма?
0
42 / 42 / 8
Регистрация: 22.05.2009
Сообщений: 97
27.10.2009, 23:17 3
В книге Дейтела была похожая программа

Time.h
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
#ifndef TIME_H
#define TIME_H
 
class Time
{
public:
    Time( int = 0, int = 0, int = 0);
 
    void setTime( int, int, int );
    void setHour( int );
    void setMinute( int );
    void setSecond( int );
 
    int getHour() const;
    int getMinute() const;
    int getSecond() const;
 
    void printUniversal();
    void printStandart();
 
private:
    int hour;
    int minute;
    int second;
};
 
#endif


Time.cpp
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "File2.h"
 
#include <iostream>
using namespace std;
 
#include <iomanip>
using std::setfill;
using std::setw;
 
 
Time::Time( int hour, int minute, int second )
{
    setTime( hour, minute, second );
}
 
void Time::setTime( int hour, int minute, int second )
{
    setHour( hour );
    setMinute( minute );
    setSecond( second );
}
 
void Time::setHour(int h )
{
    hour = ( h >= 0 && h<24 ) ? h : 0;
}
 
void Time::setMinute( int m )
{
    minute = ( m >= 0 && m < 60 ) ? m : 0;
}
 
void Time::setSecond( int s )
{
    second = ( s >= 0 && s < 60 ) ? s : 0;
}
 
int Time::getHour() const
{
    return hour;
}
 
int Time::getMinute() const
{
    return minute;
}
 
int Time::getSecond() const
{
    return second;
}
 
void Time::printUniversal()
{
    cout << setfill( '0' ) << setw( 2 ) << hour << ":"
      << setw( 2 ) << minute << ":" << setw( 2 ) << second;
}
 
void Time::printStandart()
{
    cout << ( ( 0 == hour || 12 == hour ) ? 12 : hour % 12 ) << ":"
      << setfill( '0' ) << setw( 2 ) << minute << ":" << setw( 2 )
      << second << ( hour < 12 ? " AM" : " PM" );
}


Main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include "File2.h"
#include <conio.h>
 
 
int main()
{
    Time wakeUp( 6, 45, 0);
    wakeUp.printUniversal();
    getch();
    return 0;
}


Лишнее можно выкинуть
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
28.10.2009, 00:14 4
Даемоник, лишнее, я так подозреваю - это удалить весь код и написать в освободившемся пространстве простой код, так как я подозреваю это задание на простые операторы ветвления
ByHbKa, у меня вечер настает в 23:00, но это лирическое отступление. По теме:
Вводишь две целочисленных переменных hh и mm и по интервалам смотришь - в какой попали - такое и приветствие. Например [5; 12) утра - "Доброе утро". [13; 23) - "Добрый день", [23;2) - "Добрый вечер", [2;5) - "Ночь" все делается с помощью if

Вот
так
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
32
33
34
35
36
#include <iostream>
int main()
{
    setlocale(LC_ALL, "Russian");
    int hh, mm;
    
    while (true)
    {
        std::cout<<"Введите час:\n> ", std::cin>>hh;
        if(hh >= 0 && hh < 24)
            break;
        else
            std::cout<<"Ошибка!"<<std::endl;
    }
    while (true)
    {
        std::cout<<"Введите минуты:\n> ", std::cin>>mm;
        if(mm >= 0 && mm < 60)
            break;
        else
            std::cout<<"Ошибка!"<<std::endl;
    }
    if(hh >= 2 && hh < 5)
        std::cout<<"Ночь"<<std::endl;
    else
        if(hh >= 5 && hh < 13)
            std::cout<<"Утро"<<std::endl;
        else
            if(hh >= 13 && hh < 23)
                std::cout<<"День"<<std::endl;
            else
                if(hh == 23 || hh == 0 || hh == 1)
                    std::cout<<"Вечер"<<std::endl;
    system("pause");
    return 0;
}
где-то
0
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
28.10.2009, 00:42  [ТС] 5
В потоке одна переменная, туда вводишь сразу "hh:mm" вот я немогу её разбить) Если было б все так просто я б сам уже сделал)
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
28.10.2009, 00:56 6
ByHbKa, на будущее сразу обговаривай, что вводится одна переменная.
Вот
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
32
33
34
35
#include <iostream>
int main()
{
    setlocale(LC_ALL, "Russian");
    int hh, mm;
    char time[6];
    while(true)
    {
        std::cout<<"Введите время в формате hh:mm:\n> ";
        std::cin.getline(time, 6);
        mm = time[3] - 48;
        mm *= 10;
        mm += time[4] - 48;
        hh = time[0] - 48;
        hh *= 10;
        hh += time[1] - 48; 
        if((hh >= 0 && hh < 24) || (mm >= 0 && mm < 60))
            break;
        else
            std::cout<<"Ошибка!"<<std::endl;
    }
    if(hh >= 2 && hh < 5)
        std::cout<<"Ночь"<<std::endl;
    else
        if(hh >= 5 && hh < 13)
            std::cout<<"Утро"<<std::endl;
        else
            if(hh >= 13 && hh < 23)
                std::cout<<"День"<<std::endl;
            else
                if(hh == 23 || hh == 0 || hh == 1)
                    std::cout<<"Вечер"<<std::endl;
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
28.10.2009, 20:48  [ТС] 7
Вообщем вышло у меня
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
32
void main(void)
{
 
    int  hh, mm;
   cout << "Enter the time of day in the format HH:MM"<<endl;
   char time[5];
            cin.getline(time, 5);
               mm = time[3] - 40;
               mm *= 10;
               mm += time[4] - 40;
 
               hh = time[0] - 48;
               hh *= 10;
               hh += time[1] - 48;
 
        if ( hh <= 23 && mm <= 59){
        if (hh <= 9 && hh > 4){
            cout <<"Now 0" << hh << ":" << mm <<" hours"<< " good morning";
         } else if (hh <= 15 && hh > 9){
            cout <<"Now " << hh << ":" << mm <<" hours"<< " good day";
         } else if (hh <= 21 && hh > 15) {
            cout <<"Now " << hh << ":" << mm <<" hours"<< " good evening";
         } else if (hh >= 22 && hh < 24 ) {
            cout <<"Now " << hh << ":" << mm <<" hours"<< " good night";
         } else if (hh >= 1 && hh <= 4 ) {
            cout <<"Now 0" << hh << ":" << mm <<" hours"<< " good night";
         }
      }
      if (hh > 24 || mm > 59 || hh <= -1 || mm <= -1)
        cout <<"Wrong indicated time";
     cin >> hh;
}
А подсчет времени не правильно производиться, помогите.

Добавлено через 14 минут
up

Добавлено через 18 минут
Ну кто нить помогите)
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
28.10.2009, 23:02 8
Цитата Сообщение от ByHbKa Посмотреть сообщение
C++
1
2
3
mm = time[3] - 40;
mm *= 10;
mm += time[4] - 40;
А почему -40, а не -48?
0
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
28.10.2009, 23:06  [ТС] 9
Уже исправил, теперь суть в другом.
В общем суть состоит в том что при вводе текста из него вытаскивала именно время. Например:"сейчас на часах 13:23" и из этого текста нам выводило именно "13:23"
вот что я имею уже.
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
32
33
34
35
36
37
38
39
40
41
    #include <iostream.h>
   #include <stdio.h>
   #include <string>
 
 
void main(void)
{
 
    int  hh, mm;
     char time[6];
        while(true){
        std::cout << "Enter the time of day in the format HH:MM"<<std::endl;
        std::cin.getline(time, 6);
               mm = time[3]-48;
               mm *= 10;
               mm += time[4]-48;
 
               hh = time[0] - 48;
               hh *= 10;
               hh += time[1] - 48;
                if((hh >= 0 && hh < 24) || (mm >= 0 && mm < 60))
                       break;
               else
                       std::cout<<"Error!"<<std::endl;
               }
        if ( hh <= 23 && mm <= 59){
        if (hh <= 9 && hh > 4){
            std::cout <<"Now 0" << hh << ":" << mm <<" hours"<< " good morning"<<std::endl;
         } else if (hh <= 15 && hh > 9){
            std::cout <<"Now " << hh << ":" << mm <<" hours"<< " good day"<<std::endl;
         } else if (hh <= 21 && hh > 15) {
            std::cout <<"Now " << hh << ":" << mm <<" hours"<< " good evening"<<std::endl;
         } else if (hh >= 22 && hh < 24 ) {
            std::cout <<"Now " << hh << ":" << mm <<" hours"<< " good night"<<std::endl;
         } else if (hh >= 1 && hh <= 4 ) {
            std::cout <<"Now 0" << hh << ":" << mm <<" hours"<< " good night"<<std::endl;
         }
      }
      if (hh > 24 || mm > 59 || hh <= -1 || mm <= -1)
        std::cout <<"Wrong indicated time"<<std::endl;
     system("pause");
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
28.10.2009, 23:16 10
ByHbKa, так а что именно нам надо сделать?
0
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
28.10.2009, 23:18  [ТС] 11
Дописать к программе что б при вводе текста в "hh" выбирало там только наше время и потом выводило который час и т.п. а не выкидывало.
0
42 / 42 / 8
Регистрация: 22.05.2009
Сообщений: 97
28.10.2009, 23:42 12
Посмотри, переделал немного код под твои запросы
Код
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
 
int main(void)
{
 
    int  hh, mm;
    char time[6];
    const int n = 200;
    char s[n];
    cin.getline(s,n);
    for (int i = 0 ; i < (int)strlen(s) ; i++)
     if (s[i]==':') 
     {
                   time[0]=s[i-2]-'0';
                   time[1]=s[i-1]-'0';
                   time[2]=s[i];
                   time[3]=s[i+1]-'0';
                   time[4]=s[i+2]-'0';
                   }
       mm = time[3];
       mm *= 10;
       mm += time[4];
       hh = time[0];
       hh *= 10;
       hh += time[1];
       if((hh >= 0 && hh < 24) || (mm >= 0 && mm < 60))
 
     if ( hh <= 23 && mm <= 59){
        if (hh <= 9 && hh > 4){
                cout <<"Now 0" << hh << ":" << mm <<" hours"<< " good morning"<<endl;
         } else if (hh <= 15 && hh > 9){
                cout <<"Now " << hh << ":" << mm <<" hours"<< " good day"<<endl;
         } else if (hh <= 21 && hh > 15) {
                cout <<"Now " << hh << ":" << mm <<" hours"<< " good evening"<<endl;
         } else if (hh >= 22 && hh < 24 ) {
                cout <<"Now " << hh << ":" << mm <<" hours"<< " good night"<<endl;
         } else if (hh >= 1 && hh <= 4 ) {
                cout <<"Now 0" << hh << ":" << mm <<" hours"<< " good night"<<endl;
         }
      }
      if (hh > 24 || mm > 59 || hh <= -1 || mm <= -1)
        cout <<"Wrong indicated time"<<endl;
     _getch();
     return 0;
}


Добавлено через 2 минуты
Кстати, тебе вот здесь вроде написали, что ты хотел
Анализ входной строки
0
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
29.10.2009, 17:35  [ТС] 13
Я вот еще не разобрался в switch. Помогите переделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if ( hh <= 23 && mm <= 59){
        if (hh <= 9 && hh > 4){
            cout <<"Now 0" << hh << ":" << mm <<" hours"<< " good morning"<<endl;
         } else if (hh <= 15 && hh > 9){
            cout <<"Now " << hh << ":" << mm <<" hours"<< " good day"<<endl;
         } else if (hh <= 21 && hh > 15) {
            cout <<"Now " << hh << ":" << mm <<" hours"<< " good evening"<<endl;
         } else if (hh >= 22 && hh < 24 ) {
            cout <<"Now " << hh << ":" << mm <<" hours"<< " good night"<<endl;
         } else if (hh >= 1 && hh <= 4 ) {
            cout <<"Now 0" << hh << ":" << mm <<" hours"<< " good night"<<endl;
         }
      }
Добавлено через 1 час 20 минут
up))

Добавлено через 8 минут
все уже сам сделал
0
29.10.2009, 17:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2009, 17:35
Помогаю со студенческими работами здесь

Доброе время суток
Подскажите, пожалуйста, как заменить стандартный вид радио кнопки на вырезанную картинку

Notification в определенное время суток
Я создал уведомление, которое срабатывает по нажатию кнопки, сразу. Что нужно дописать в коде,...

Узнать текущее время суток
нужно узнать текущее время и соответствующим образом поздороваться с пользователем. как это(узнать...

Какое время суток предпочитаите
Вопрос к программистам. Вкотором часу Вы восномном занимаетесь работой над програмами или просто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru