0 голосов
72 просмотров

С++

Электронные часы показывают время в формате h:mm:ss, то есть сначала записывается количество часов, потом обязательно двузначное количество минут, затем обязательно двузначное количество секунд. Количество минут и секунд при необходимости дополняются до двузначного числа нулями.

С начала суток прошло n секунд. Выведите, что покажут часы.
Входные данные

Вводится целое число n.
Выходные данные

Выведите ответ на задачу, соблюдая требуемый формат.
Примеры
Входные данные

3602

Выходные данные

1:00:02

Входные данные

129700

Выходные данные

12:01:40

от (46 баллов) по предмету Информатика

1 Ответ

0 голосов
от Отличник (9.7k баллов)
 
Лучший ответ

//текуще время
#include
#include
#include
using namespace std;

string dig(int n)
{   
   string st="";
   if (n>9) {  st=st+char(n%10+48);  st=char(n/10+48)+st; }
   else  st=st+'0'+char(n+48);
   return(st);
}

int main(int argc, char** argv) {
   int n,k,m,sc;
   string s="";
   cout<<"n = ";   cin>>n;  cout<<endl;<br>   k=n/3600;
   m=(n-k*3600)/60;
   sc=n-k*3600-m*60;
   if (k>24)  k=k%24;
   if (k<10)  s=s+char(k+48)+':';<br>   else s=s+dig(k)+':';
   s=s+dig(m)+':';
   s=s+dig(sc);
   cout<<"time:  "<<s<<endl;<br>   system("pause");
   return(0);
}

от Отличник (9.7k баллов)

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

от Начинающий (593 баллов)

упс еще нужно исправить кое что

от Начинающий (593 баллов)

#include "iostream"

using namespace std;
int main(){
int secound =0;
int hh =0;
int mm =0;
int ss =0;
cin >> secound;
int temp = secound;
int hhTemp;
for(int i = 0; i <= secound; i++){<br> if(i == 60){
mm++;
i-=60;
secound-=60;
}
if(mm == 60){
hh++;
mm=0;
}
if(hh > 23){
hhTemp= hh;
hh=0;
}
}
ss = temp - hh*3600 - mm *60;
cout << hh <<":"<< mm << ":" << ss;<br>return 0;
}

от Начинающий (593 баллов)

можно и так сделать

от Отличник (9.7k баллов)

//текущее время
#include
#include
#include
using namespace std;

int main(int argc, char** argv) {
   int n,k,m,sc; 
   cout<<"n = ";  cin>>n;  cout<<endl;  <br>   k=n/3600;
   m=(n-k*3600)/60;
   sc=n-k*3600-m*60;
   if (k>24)  k=k%24;
   cout<<"time:  "<<k<<":";<br>   cout<<setfill('0')<<setw(2)<<m<<":"<<setw(2)<<sc<<endl;<br>   system("pause");
   return(0);
}

Это вариант с использованием манипуляторов ввода - вывода.

от Одаренный (3.7k баллов)

Удалите свои комментарии с решениями. Они вводят пользователей в ступор.

от Начинающий (593 баллов)

Вижу но можно и без них без iomanip и cstdlib

от Начинающий (593 баллов)

все не влазит

от Начинающий (593 баллов)

скину в решение

0 голосов
от
#include <iostream>
using namespace std;
int main() {
    int s;
    cin >> s;
    int m = (s / 60) % 60, h = (s / 3600) % 24;
    int m1 = m / 10;
    int m2 = m % 10;
    int T = ((s % 3600) % 60);
    int T1 = T / 10;
    int T2 = T % 10;
    cout << h << ":" << m1 << m2 << ":" << T1 << T2;
    return 0;
}
...