Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как отразить часы в c++

Иван Оралов'атынет Знаток (335), закрыт 2 недели назад
сижу думаю, не могу понять как отразить стрелку часов кодом. какой алгоритм можно использовать и как??
Лучший ответ
Николай Веселуха Высший разум (374654) 1 месяц назад
 #include <cctype> 
#include <iostream>
#include <string>
#include <vector>

using namespace std;

class Mirrortime {
string time;
int min;
string mirror() const {
constexpr auto total = 720;
if (min == total) return "12:00"s;
const auto inv = total - min;
const auto h = inv / 60;
const auto m = inv % 60;
string t;
if (!h) t = "12:";
else {
if (h < 10) t += '0';
t += to_string(h) + ':';
}
if (m < 10) t += '0';
t += to_string(m);
return t;
}
void split() {
min = stoi(string(time.begin(), time.begin() + 2)) * 60;
min += stoi(string(time.begin() + 3, time.end()));
}
friend istream& operator>>(istream& inp, Mirrortime& mt) {
inp >> mt.time;
mt.split();
return inp;
}
friend ostream& operator<<(ostream& out, const Mirrortime& mt) {
return out << mt.mirror();
}
};

int main() {
size_t n;
cin >> n;
vector<Mirrortime> times(n);
for (auto& time : times) cin >> time;
cout.put('\n');
for (const auto& time : times) cout << time << '\n';
system("pause > nul");
}
Остальные ответы
Павел Михаловский Просветленный (38052) 1 месяц назад
С минутами просто.
вычитаешь из 60 количество минут.
Было 9 минут, стало 60 - 9 = 51 минута.

С часами как.

Вначале смотришь, больше 12 или меньше. Если больше 12 и запоминаешь, что изначально часов больше 12 и вычитаешь 12 часов. Было 16 часов, стало 4 часа.

Если отраженных минут больше 30, то вычитаешь 1 из часов.

Потом если больше 12 часов, то прибавляешь к отраженным числам 12
Андрей Высший разум (472599) 1 месяц назад
 for _ in range(int(input())):
h, m = map(int, input().split(':'))
m = -(h * 60 + m) % 720
print('%02d:%02d' % (m // 60 or 12, m % 60))
Работающий пример: https://onlinegdb.com/r9dO78Bca

В 12 часах 720 минут.
-(h * 60 + m) % 720 вычисляет кол-во минут, оставшихся до 12:00.
m // 60 or 12 если кол-во часов равно 0, меняем значение на 12.

Опять эти "программисты" сломали публикацию кода (формат вывода отображается неправильно). Так что дублирую простым текстом:
for _ in range(int(input())):
h, m = map(int, input().split(':'))
m = -(h * 60 + m) % 720
print('%02d:%02d' % (m // 60 or 12, m % 60))
Иван Рудской Мастер (2171) 1 месяц назад
Вот мой говнокодик

t = int(input("T: "))
#t=0
arr=[]
try:
if t<1000:
for i in range(0,t):
enter = str(input(f"Time [{i}]: "))
arr.append(enter)

print(arr)

arr_result=[]
for i in range(0,len(arr)):
new_time=""
get_time = arr[i]
db=f"{get_time[0]}{get_time[1]}"
get_time = int(db)
if get_time==12 or get_time==6:
pass
elif get_time>6:
get_time-=6
elif get_time<6:
get_time+=6

if get_time<10:
new_time+="0"
new_time+=f"{get_time}:"
get_time=arr[i]
db=f"{get_time[3]}{get_time[4]}"
get_time = int(db)
get_time = 60 - get_time
if get_time<10:
new_time+="0"
new_time+=str(get_time)
arr_result.append(new_time)

print(f"Result: {arr_result}")
except Exception as ex:
print(ex)





input("Enter to continue")

Там отвечал тип в 4 строки, лично у меня не компилится его код
Иван Оралов'атынетЗнаток (335) 1 месяц назад
лайк за старания :)
Похожие вопросы