Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
MRG_Serejka
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 185
Завершенные тесты: 2
#1

Вывести время двумя цифрами (однозначные числа дополнить слева нулями) - C++

16.02.2017, 18:15. Просмотров 407. Ответов 17
Метки нет (Все метки)

вывод этой программы такой 12:1:40 при вводимой переменной 129700

а надо Correct output: 12:01:40
как я должен сделать чтобы вывело 01 ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{
    int hours, min, sec;
    int time;
    cout << "Введите время в секундах: ";
    cin >> time;
    hours = (time/3600)%24;
    cout << hours<<':';
    min = ((time/60)%60);
    cout << min<<':';
    sec = (time%60);
        cout << sec;
    return 0;   
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2017, 18:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывести время двумя цифрами (однозначные числа дополнить слева нулями) (C++):

Строки. Нужно дополнить строку нулями слева
Нужно дополнить строку нулями слева. Например была строка str1=&quot;345&quot; ...

Числа, представимые разностью квадрата числа, образованного первыми двумя цифрами и квадратом 3-ей цифры
найти все трехзначные числа которые можно представить разность между квадратом...

Вывести наименшую зарплату на предприятии с двумя цифрами после запятой
Очень-очень вас прошу помогите с задачей На малом предприятии работает...

Определить максимальную разность между двумя соседними цифрами числа
Написать программу для с++: Дано целое число N. Определить максимальную...

Двузначное число, образованное первыми двумя цифрами числа, умноженное на 3-ю цифру..
Двузначное число, образованное первыми двумя цифрами числа, умноженное на 3-ю...

Вывести сумму чисел из данного набора, расположенных между двумя нулями
Задание: дано целое число N и набор из N целых положительных чисел, содержащий...

17
Байт
Эксперт C
17770 / 11795 / 2450
Регистрация: 24.12.2010
Сообщений: 23,716
16.02.2017, 18:19 #2
C++
1
printf("%02d:%02d:%02d", hours, min, sec);
0
MRG_Serejka
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 185
Завершенные тесты: 2
16.02.2017, 18:20  [ТС] #3
Байт, а без printf как можно сделать?
0
Байт
Эксперт C
17770 / 11795 / 2450
Регистрация: 24.12.2010
Сообщений: 23,716
16.02.2017, 18:28 #4
Какие-то есть аналоги и для cout, но printf это делает компактней

Добавлено через 47 секунд
MRG_Serejka, гляньте документацию по cout

Добавлено через 6 минут
C++
1
cout << setw(2) << setfill('0') << min;
Проще застрелиться
1
MRG_Serejka
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 185
Завершенные тесты: 2
16.02.2017, 18:29  [ТС] #5
Байт, спасибо БАЙТик выручил
0
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,245
16.02.2017, 18:33 #6
Цитата Сообщение от Байт Посмотреть сообщение
Проще застрелиться
Благо, в С++ есть чем)
Да, форматирование вывода в Си на порядок удобнее.
1
MRG_Serejka
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 185
Завершенные тесты: 2
16.02.2017, 18:42  [ТС] #7
MrGluck, но вопрос в том что я изучаю видео курсы , на начальной степени. и я не уверен что такой образ форматирования вывода через манипулятор там предпологался. ссылка на источник :https://stepik.org/lesson/%D0%A6%D0%...%2B)&unit=4362
0
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,245
16.02.2017, 18:49 #8
Однако, со временем можно немного упростить себе жизнь:
http://www.cplusplus.com/reference/iomanip/put_time/

C++
1
2
3
4
5
6
7
8
9
10
11
#include <ctime>
#include <iomanip>
#include <iostream>
 
int main()
{
    std::cout << "Enter time in seconds: ";
    std::time_t tt;
    std::cin >> tt;
    std::cout << std::put_time(gmtime(&tt), "%T");
}
0
MRG_Serejka
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 185
Завершенные тесты: 2
16.02.2017, 19:09  [ТС] #9
MrGluck, вот программа . она ответ выводит корректно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    int hours, min, sec;
    int time;
    cout << "Введите время в секундах: ";
    cin >> time;
    hours = (time/3600)%24;
    min = ((time/60)%60);
    sec = (time%60);
    printf("%02d:%02d:%02d", hours, min, sec);
 
    return 0;   
}
но на сайте с заданиями не принимает ее...
вот ее ответ:
Failed test #1. Wrong answer
Input:
3602
Your output:
Введите время в секундах: 01:00:02
Correct output:
1:00:02


нашел ошибку вывод не должен менять часы

Добавлено через 7 минут
Failed test #1. Wrong answer
Input:
3602
Your output:
Введите время в секундах: 1:00:02
Correct output:
1:00:02
помогите решить эту тупость!!! ссылка на задачу https://stepik.org/lesson/%D0%A6%D0%...%2B)&unit=4362
0
liv
375 / 342 / 124
Регистрация: 07.10.2015
Сообщений: 1,281
Завершенные тесты: 1
16.02.2017, 19:22 #10
printf("%d:%02d:%02d", hours, min, sec);
0
MRG_Serejka
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 185
Завершенные тесты: 2
16.02.2017, 19:25  [ТС] #11
_liv_, я сделал выше глянь вывод. не помогло с выполнением задачи
0
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,245
16.02.2017, 19:33 #12
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
Your output: 01:00:02
Correct output: 1:00:02
Действительно, тупость.
А если так:
C++
1
2
3
4
5
6
7
8
#include <cstdio>
 
int main()
{
    int sec;
    scanf("%d", &sec);
    printf("%d:%02d:%02d", sec / 3600 % 24, sec / 60 % 60, sec % 60);
}
0
nonedark2008
1022 / 762 / 210
Регистрация: 28.07.2012
Сообщений: 2,118
16.02.2017, 19:37 #13
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
Введите время в секундах:
Я думаю, что эта фраза все портит.
0
liv
375 / 342 / 124
Регистрация: 07.10.2015
Сообщений: 1,281
Завершенные тесты: 1
16.02.2017, 19:38 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    int hours, min, sec;
    int time;
    cout << "Введите время в секундах: ";
    cin >> time;
    hours = (time/3600)%24;
    cout << hours<<':';
    min = ((time/60)%60);
    cout << setw(2) << setfill('0') << min << ':';
    sec = (time%60);
    cout << setw(2) << setfill('0') << sec << endl;
    return 0;   
}
0
nonedark2008
1022 / 762 / 210
Регистрация: 28.07.2012
Сообщений: 2,118
16.02.2017, 19:38 #15
Ведь написано же, ожидается:
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
1:00:02
Получено:
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
Введите время в секундах: 1:00:02
Чувствуешь разницу?
0
liv
375 / 342 / 124
Регистрация: 07.10.2015
Сообщений: 1,281
Завершенные тесты: 1
16.02.2017, 19:40 #16
Цитата Сообщение от MrGluck Посмотреть сообщение
Действительно, тупость
Если требуется показать владение форматированным выводом, то совсем не тупость
0
nonedark2008
16.02.2017, 19:53
  #17

Не по теме:

Цитата Сообщение от _liv_ Посмотреть сообщение
требуется показать владение форматированным выводом, то совсем не тупость
Требуется показать умение сделать программу так, как сказано в ТЗ, а не так как хочется. К реальной жизни готовят

0
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 502
Завершенные тесты: 1
16.02.2017, 20:10 #18
Что за курсы вы проходите?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <Windows.h>
 
    int main (){
 
        int sek (60);
        int miN (1);
 
        while (true){
 
            std::cout << miN << " : " << sek;
 
            if(sek == 0){
                sek = 60;
                miN --;
            }
 
            sek --;
            Sleep (1000);
            system ("cls");
        }
    }
0
16.02.2017, 20:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2017, 20:10
Привет! Вот еще темы с решениями:

Вывести сумму чисел из набора, расположенных между последними двумя нулями
Дано целое число N и набор из N целых чисел, содержащий по крайней мере два...

первых четырех цифр числа равна двузначному числу образованному последними двумя цифрами
сумма первых четырех цифр числа равна двузначному числу, образованному...

Вывести сумму чисел из данного набора, расположенных между первыми двумя нулями
№1 Дано целое число N и набор из N целых чисел, содержащий по крайней мере два...

Вывести сумму чисел из данного набора, расположенных между последними двумя нулями
№2 Дано целое число N и набор из N целых чисел, содержащий по крайней мере два...


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

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

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