Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/70: Рейтинг темы: голосов - 70, средняя оценка - 4.81
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
1

Количество секунд в количество суток, часов, минут, секунд

13.08.2013, 14:02. Показов 14693. Ответов 17
Метки нет (Все метки)

Кликните здесь для просмотра всего текста
Напишите программу, которая выдавала бы запрос на ввод количества секунд в
виде целого значения ( используйте тип long) , и затем отображала бы эквивалентное
значение в сутках, часах, минутах и секундах. Для представления количества
часов в сутках, количества минут в часе и количества секунд в минуте используйте
символьные константы. Пример результата выполнения программы
выглядит следующим образом:
Enter the number of secоnds : 31600000
31600000 secоnds = 365 days , 46 minutes , 40 secоnds


вот мой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
const int sec_in_min = 60;
const int sec_in_hour = 3600;
const int sec_in_day = 3600*24;
 
int main()
{
    setlocale(0,"russian");
    cout << "Введите значение в секундах: ";
    long sec;
    cin >> sec;
    short final_sec, final_hour, final_min, final_day; //значения после преобразования
    final_hour = sec/sec_in_hour;   // вот это получается правильно
    final_min = sec/(final_hour);
    final_sec = sec%(final_min*sec_in_min);
    cout << final_hour << " " << final_min << " " << final_sec;
    system("pause");
    return 0;
}
Решил попробовать решить пока только с часами, минутами и секундами, все равно не получается. Правильно получается только часы. Помогите! С меня спасибка
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.08.2013, 14:02
Ответы с готовыми решениями:

Работа с функцией. Дано количество часов, минут и секунд с начала суток. Вычислить общее количество секунд с начала суто
Дано количество часов, минут и секунд с начала суток. Вычислить общее количество секунд с начала...

Функция перевода секунд в соответствующее количество часов, минут, секунд
Написать программу, в которой пользователь задаѐт количество секунд. Это значение передаѐтся...

Написать программу, которая определяет количество часов, минут и секунд
Написать программу, которая по заданному количеству секунд определяет количество часов, минут и...

Определить количество месяцев, дней, часов, минут и секунд до запуска космического корабля на текущий момент времени
Всем доброго времени суток!!:) Прошу помощи с программой. Для клуба любителей авиации и...

17
189 / 159 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
13.08.2013, 14:40 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
#include <iostream>
using namespace std;
 
const int sec_in_min = 60;
const int sec_in_hour = 3600;
const int sec_in_day = 3600*24;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    long sec;
 
    cout << "Введите количество секунд: ";
    cin >> sec;
 
    cout << (sec / sec_in_day > 0 ? sec / sec_in_day : 0 ) << " дней ";
    sec %= sec_in_day;
    cout << (sec / sec_in_hour > 0 ? sec / sec_in_hour : 0 ) << " часов ";
    sec %= sec_in_hour;
    cout << (sec / sec_in_min > 0 ? sec / sec_in_min : 0 ) << " минут ";
    sec %= sec_in_min;
    cout << sec << " секунд" << endl;
 
    system("pause");
    return 0;
}
2
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
13.08.2013, 14:46  [ТС] 3
Цитата Сообщение от Мимино Посмотреть сообщение
C++
1
2
3
4
5
6
7
    cout << (sec / sec_in_day > 0 ? sec / sec_in_day : 0 ) << " дней ";
    sec %= sec_in_day;
    cout << (sec / sec_in_hour > 0 ? sec / sec_in_hour : 0 ) << " часов ";
    sec %= sec_in_hour;
    cout << (sec / sec_in_min > 0 ? sec / sec_in_min : 0 ) << " минут ";
    sec %= sec_in_min;
    cout << sec << " секунд" << endl;
Объясни пожалуйста вот этот момент, я ничего не понял
0
189 / 159 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
13.08.2013, 14:50 4
C++
1
2
3
4
5
6
cout << (sec / sec_in_day > 0 ? sec / sec_in_day : 0 ) << " дней "; // если секунд ввели больше, чем секунд в сутках, то выведет количество дней, иначе 0 (вместо if/else используется  ?: )
    sec %= sec_in_day; // из общего количества секунд убираем количество секунд свыше суток. Дальше аналогично
    cout << (sec / sec_in_hour > 0 ? sec / sec_in_hour : 0 ) << " часов ";
    sec %= sec_in_hour;
    cout << (sec / sec_in_min > 0 ? sec / sec_in_min : 0 ) << " минут ";
    sec %= sec_in_min;
0
101 / 86 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
13.08.2013, 14:56 5
В задании говориться ещё и о днях:
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
int main()
{
    setlocale(0,"russian");
    cout << "Введите значение в секундах: ";
    long sec;
    cin >> sec;
    short final_sec, final_hour, final_min, final_day; //значения после преобразования
    final_sec = final_hour = final_min = final_day =0;
 
    if (sec >= sec_in_day)                   // считаем дни
        final_day = sec/sec_in_day;
    sec = sec - (final_day * sec_in_day);
 
    if (sec >= sec_in_hour)
        final_hour = sec/sec_in_hour;       // считаем часы
    sec = sec-(final_hour*sec_in_hour);
 
    if (sec >= sec_in_min)
        final_min = sec/sec_in_min;         // считаем минуты
    final_sec = sec-(final_min*sec_in_min);
 
    cout << final_day << " "<< final_hour << " " << final_min << " " << final_sec << "\n";
    system("pause");
    return 0;
}
1
Комп_Оратор)
Эксперт по математике/физике
8719 / 4428 / 598
Регистрация: 04.12.2011
Сообщений: 13,270
Записей в блоге: 16
13.08.2013, 15:02 6
Как вариант:
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
#include <iostream>
using namespace std;
class SeksToDaysMinSec{
unsigned long seks;
static const unsigned long seks_in_min_and_min_in_h;
static const unsigned long min_in_h;
static const unsigned long h_day;
public:
SeksToDaysMinSec(unsigned long seks_)
:seks(seks_){}
void getDataFormat();
};
const unsigned long SeksToDaysMinSec::seks_in_min_and_min_in_h=60;
const unsigned long SeksToDaysMinSec::h_day=24;
 
void 
SeksToDaysMinSec::
getDataFormat()
{
unsigned days=0;
unsigned short hs=0, mins=0, secs=0;
 
days = seks /(seks_in_min_and_min_in_h * seks_in_min_and_min_in_h * h_day);
unsigned long seksTmp = seks - days * seks_in_min_and_min_in_h * seks_in_min_and_min_in_h * h_day;
cout<<seksTmp<<endl;
hs = seksTmp / (seks_in_min_and_min_in_h * seks_in_min_and_min_in_h);
seksTmp -=  hs * seks_in_min_and_min_in_h * seks_in_min_and_min_in_h;
mins = seksTmp / seks_in_min_and_min_in_h;
seksTmp -=  mins * seks_in_min_and_min_in_h;
secs = seksTmp;
cout<<days<<" days "<< hs << "houres " << mins << " minutes " << secs << " seconds "<<endl;
}
int main() {
cout<<"Enter seconds, please ";
unsigned long seks_;
cin>>seks_;
SeksToDaysMinSec ascoca(seks_);
ascoca.getDataFormat();
cout<<endl;
cin.ignore();
cin.get();   
return 0;
}
1
0 / 0 / 1
Регистрация: 24.01.2013
Сообщений: 26
14.08.2013, 00:14 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
# include <iostream>
const int day_in_year = 365;
const int hour_in_day = 24;
const int min_in_hour = 60;
const int sec_in_sec = 60;
 
int main()
{
    using namespace std;
    setlocale(LC_ALL, "Russian");
 
    cout << "Введите количество секунд: ";
    long long second;
    cin >> second;
    int days = 0, hour = 0, min = 0, sec = 0;
    int ostatok;
    days = second / (hour_in_day * min_in_hour * sec_in_sec);
    hour = (second % (hour_in_day * min_in_hour * sec_in_sec)) / (min_in_hour * sec_in_sec);
    min = (second % (hour_in_day * min_in_hour * sec_in_sec)) % (min_in_hour * sec_in_sec) / sec_in_sec;
    sec = (second % (hour_in_day * min_in_hour * sec_in_sec)) % (min_in_hour * sec_in_sec) % sec_in_sec;
    cout << second << " секунд = " << days << " дней, " << hour << " часов, " << min << " минут, " << sec << " секунд";
         
    return 0;
}
0
50 / 50 / 9
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
14.08.2013, 01:38 8
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
#include <iostream>
using namespace std;
 
int main()
{
    system("chcp 1251");
    system("title Chapter 3 Ex.4");
 
    const int Seconds_in_minutes = 60;
    const int Seconds_in_hours = 60 * Seconds_in_minutes;
    const int Seconds_in_days = 24 * Seconds_in_hours;
 
    cout << "Enter the number of seconds: ";
    long long total_seconds;
    cin >> total_seconds;
 
    cout << total_seconds << " seconds = ";
 
    int days,hours,minutes,seconds;
 
    days = total_seconds / Seconds_in_days;
    total_seconds = total_seconds % Seconds_in_days;
    hours = total_seconds / Seconds_in_hours;
    total_seconds = total_seconds % Seconds_in_hours;
    minutes = total_seconds / Seconds_in_minutes;
    total_seconds = total_seconds % Seconds_in_minutes;
    seconds = total_seconds;
 
    cout << days << " days, "
        << hours << " hours, "
        << minutes << " minutes, "
        << seconds << " seconds."
        << endl;
    
 
    system("PAUSE");
    return 0;
}
1
Сгибальщик
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
14.08.2013, 07:30 9
Почему бы не использовать <ctime>?
И, судя по примеру, значения, равные 0, не отображаются (в примере пропущены часы).
0
50 / 50 / 9
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
14.08.2013, 11:27 10
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Почему бы не использовать <ctime>?
И, судя по примеру, значения, равные 0, не отображаются (в примере пропущены часы).
Задача из книжки и необходимо использовать то, что было изучено, а это переменные и базовые операции.
http://qvazi-s.narod.ru/img/consolech3ex4.png
0
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 8
16.01.2020, 23:04 11
C++ (Qt)
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
#include <iostream>
 
int main()
{
    using namespace std;
 
    const short sec_in_min = 60;
    const short sec_in_hour = 60*60;
    const int sec_in_day = 24*60*60;
 
    cout << "Enter the number of seconds: ";
    long long seconds;
    cin >> seconds;
 
    short days = seconds / sec_in_day;
    short hours = (seconds % sec_in_day) / sec_in_hour;
    short minutes = ((seconds % sec_in_day) % sec_in_hour) / sec_in_min;
    short rest_seconds = ((seconds % sec_in_day) % sec_in_hour) % sec_in_min;
 
    cout << seconds << " seconds = " << days << " days, " << hours << " hours, "
         << minutes << " minutes, " << rest_seconds << " seconds" << endl;
 
 
    return 0;
}
0
Don't worry, be happy
17166 / 10050 / 1934
Регистрация: 27.09.2012
Сообщений: 25,040
Записей в блоге: 1
16.01.2020, 23:20 12
Шесть лет решали!
0
Эксперт С++
8426 / 4099 / 894
Регистрация: 15.11.2014
Сообщений: 9,209
16.01.2020, 23:49 13
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Enter the number of secоnds : 31600000
31600000 secоnds = 365 days , 46 minutes , 40 secоnds
https://rextester.com/VCH27784

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
#include <iostream>
#include <cassert>
#include <string>
 
    ::std::string stringFrom(
        const size_t ms, 
        const size_t sec,   
        const size_t min,   
        const size_t hours,
        const size_t days)
    {
        ::std::string result; 
 
        if(days == 1)
            result = ", " + ::std::to_string(days) + " day";
        else if(days > 1)
            result = ", " + ::std::to_string(days) + " days";
 
        if(hours == 1)
            result += ", " + ::std::to_string(hours) + " hour";
        else if(hours > 1)
            result += ", " + ::std::to_string(hours) + " hours";
 
        if(min != 0)
            result += ", " + ::std::to_string(min) + " min";
 
        if(sec != 0)
            result += ", " + ::std::to_string(sec) + " sec";
 
        if(ms != 0)
            result += ", " + ::std::to_string(ms) + " ms";
 
        if(result.empty())
            return "0 ms";
        assert(result[0] == ',');
        assert(result[1] == ' ');
        result.erase(0, 2);
        return result;
    }
 
    ::std::string stringFromMilliseconds(const size_t milliseconds)
    {
        const size_t ms = milliseconds                  % 1000;
        const size_t s  = (milliseconds / 1000)           % 60;
        const size_t m  = (milliseconds / 1000 / 60)      % 60;
        const size_t h  = (milliseconds / 1000 / 60 / 60) % 24;
        const size_t d  = (milliseconds / 1000 / 60 / 60 / 24);
        return stringFrom(ms, s, m, h, d);
    }
 
int main()
{
    std::cout << stringFromMilliseconds(31'600'000'000) << '\n';
}
output:
Код
365 days, 17 hours, 46 min, 40 sec
1
1 / 1 / 0
Регистрация: 19.12.2020
Сообщений: 26
24.12.2020, 10:35 14
Столько решений и ............ В условии написано:"Для представления количества часов в сутках(1),количества минут в часе(2) и количества секунд в минуте(3)". Должно быть три символьные константы. Они должны отражать только то что, написано в условии. А тут все напридумывали каких то своих констант))).Понятно, что решить задачу можно по разному, но если использовать материал учебника Прата и придерживаться условия задачи, то вот у меня такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
int main()
{
    using namespace std;
    const short Hours_per_day = 24, Minutes_per_hour = 60, Seconds_per_minute = 60;
    long long seconds;
    int day, hour, minute, second,remainder;
    cout << " Enter the number of seconds : ";
    cin >> seconds;
    day = seconds / double(Hours_per_day * Minutes_per_hour * Seconds_per_minute);//находим дни
    remainder = seconds % (Hours_per_day * Minutes_per_hour * Seconds_per_minute);//остаток при нахождении дней
    hour = remainder / double(Minutes_per_hour * Seconds_per_minute);//находим часы
    remainder= remainder % (Minutes_per_hour * Seconds_per_minute);// остаток при нахождении часов
    minute = remainder / double(Seconds_per_minute);//находим минуты
    remainder= remainder % Seconds_per_minute;
    cout <<" "<< seconds << " seconds = " << day << " days, " << hour << " hours, " << minute << " minunes, " << remainder << " seconds";
    return 0;
}
0
фрилансер
3013 / 2252 / 563
Регистрация: 11.10.2019
Сообщений: 6,683
24.12.2020, 10:41 15
Цитата Сообщение от Dzygun Roman Посмотреть сообщение
Столько решений
а за это время изобрели QDateTime, COleDateTime, std::chrono, в конце концов

и стали не особо нужны велосипеды )
0
Комп_Оратор)
Эксперт по математике/физике
8719 / 4428 / 598
Регистрация: 04.12.2011
Сообщений: 13,270
Записей в блоге: 16
24.12.2020, 11:51 16
Цитата Сообщение от Алексей1153 Посмотреть сообщение
и стали не особо нужны велосипеды )
Это для учёбы. Тут полно заданий для ровнокодинга. Хотя многие, судя по высказывания, учились сразу разбирая коды библиотек std, boost и пр. Мне нравится другое. Кипит наш разум возмущённый)
0
фрилансер
3013 / 2252 / 563
Регистрация: 11.10.2019
Сообщений: 6,683
24.12.2020, 11:54 17
IGPIGP, считать время - задача нетривиальная. Для школьников не подходит ) Пускай вводят данные в массивы и выводят в файлы
0
Комп_Оратор)
Эксперт по математике/физике
8719 / 4428 / 598
Регистрация: 04.12.2011
Сообщений: 13,270
Записей в блоге: 16
24.12.2020, 13:59 18
Цитата Сообщение от Алексей1153 Посмотреть сообщение
IGPIGP, считать время - задача нетривиальная.
Это вопрос индивидуальный)
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Для школьников не подходит ) Пускай вводят данные в массивы и выводят в файлы
Жесткие диски не настолько жёсткие, чтобы это выдержать (imo). Но задача именно для начинающих. Я вижу лукавинку вот в чём. Человеческий мозг сам себе враг. Инерция мысли - карета на которой мысль имеет свойство перемещаться. Мы пишем время по старшенству, чтобы идти от главного к второстепенному - годы, месяцы, дни, часы, минуты, секунды. Но система подсчёта строится же ведь в обратном порядке, она идёт от деталей к главному. Таким образом иерархия единиц выглядит наооборот: секунды, минуты, часы и т.д. Таким образом, самая компактная система расчёта должна идти от секунд и по возрастающей. А наш мозг (неопытный) требует считать согласно записи)
Вот как может выглядеть императивный "код без констант и функций" (дровно код, образно говоря) :
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
#include <iostream>
using std::cout;
using  std::cin;
 
int main()
{
    int total_secs ;
    cout<<"enter seconds " ;
    cin>>total_secs ;
 
    int total_mins=total_secs/60 ;
    int secs=total_mins? total_secs%(total_mins*60) : total_secs ;
 
    int total_hours=total_mins/60 ;
    int mins=total_hours ? total_mins%(total_hours*60) : total_mins;
 
    int days=total_hours/24 ;
    int hours=days? total_hours%(days*24) : total_hours;
 
    cout<<total_secs<<" is equal "<<
                                    days<<" days "<<
                                    hours<<" hours "<<
                                    mins<<" mins "<<
                                    secs<<" secs"<<'\n';
 
    cout<<"test "<<days*24*3600+hours*3600+mins*60+secs<<'\n';
 
 
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2020, 13:59

Сделать так, чтобы на выходе показывало полное количество часов, остаток минут и потом остаток секунд
Помогите, пожалуйста, сделать так, чтобы на выходе показывало полное количество часов, остаток...

Вычислить количество секунд с начала суток
1. Простейшие программы: Дано кол-во часов, минут, секунд с начала суток. Вычислить кол-во секунд с...

Вычислить количество секунд с начала суток
Дано количество часов, минут и секунд с начала суток. Вычислить количество секунд с начала суток.

Найти количество минут и секунд ,прошедших с начала последнего часа
С начала суток прошло N секунд (N-целое).Найти количество минут и секунд ,прошедших с начала...


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

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

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