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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
ByHbKa
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
#1

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

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

Вводим время в формате hh:mm в зависимости от того утро, день, вечер или ночь выводим приветственное сообщение доброе утро, добрый день, добрый вечер...
Помогите сделать плз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2009, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Распарсить время суток по часам. (C++):

Перевод с Паскаля на Си. Определить время суток - C++
Нужна помощь в переводе с паскаля на С ++ п. 5.18. Правил Запрещено размещать задания и решения в виде картинок и других файлов с их...

Доброе время суток . Выручяйте , нечего нового матрица .... - C++
Вот по сылки дано задание , ето лабароторная , очень прошу помогите зделать , на выходных времени небудет , я сведетель на свадьбе , вся...

Доброго время суток. Как выбрать правильный путь? - C++
Не хотелось бы, что бы тема была похожа на какую то или входил в тот ряд тем, которыми надоедает каждый начинающий программист...

Разработать программу, которая выводит время суток прописью - C++
Помогите сделать прогу :-( Разработать три программы. Первая принимает от пользователя значение времени суток – строку вида...

доброе время суток,подскажите что не так?программа в С++ - C++
#include<iostream.h> #include<conio.h> #include<math.h> int main () { int xn,xk,a,b,c,dx; float f; clrscr(); ...

C++ Идёт k-я секунда суток. Определите, сколько целых часов h и целых минут m прошло с начала суток - C++
Идёт k-я секунда суток. Определите, сколько целых часов h и целых минут m прошло с начала суток. Например, если k=13257=33600+4060+57,...

12
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,340
Завершенные тесты: 1
27.10.2009, 23:00 #2
ByHbKa, а в чем пробма?
0
Даемоник
42 / 42 / 3
Регистрация: 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
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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
ByHbKa
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
28.10.2009, 00:42  [ТС] #5
В потоке одна переменная, туда вводишь сразу "hh:mm" вот я немогу её разбить) Если было б все так просто я б сам уже сделал)
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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
ByHbKa
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
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
28.10.2009, 23:02 #8
Цитата Сообщение от ByHbKa Посмотреть сообщение
C++
1
2
3
mm = time[3] - 40;
mm *= 10;
mm += time[4] - 40;
А почему -40, а не -48?
0
ByHbKa
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
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
28.10.2009, 23:16 #10
ByHbKa, так а что именно нам надо сделать?
0
ByHbKa
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
28.10.2009, 23:18  [ТС] #11
Дописать к программе что б при вводе текста в "hh" выбирало там только наше время и потом выводило который час и т.п. а не выкидывало.
0
Даемоник
42 / 42 / 3
Регистрация: 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
ByHbKa
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2009, 17:35
Привет! Вот еще темы с ответами:

С начала суток часовая стрелка повернулась на "y" градусов. Сколько часов и минут прошло с начала суток? - C++
С начала суток часовая стрелка повернулась на &quot;y&quot; градусов. Сколько часов и сколько минут прошло с начала суток? #include...

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru