Проблема в вашем коде заключается в неправильном вычислении минут. Вот как можно исправить код, чтобы он корректно выводил время в формате "часы:минуты:секунды"
use std::io;
fn main() {
let mut inp1 = String::new();
io::stdin().read_line(&mut inp1).expect("Failed to read line");
let x: i128 = inp1.trim().parse().expect("Please enter a number");
let h = x / 3600;
let m = (x % 3600) / 60;
let s = x % 60;
println!("{:02}:{:02}:{:02}", h, m, s);
}
Изменения, внесенные в код:
Вычисление часов остается таким же: let h = x / 3600;. Это дает количество полных часов в x секундах.
Для вычисления минут мы используем (x % 3600) / 60. x % 3600 дает остаток от деления x на 3600, то есть количество секунд, которые не вошли в полные часы. Деление на 60 дает количество полных минут в этом остатке.
Вычисление секунд остается таким же: let s = x % 60;. Это дает остаток от деления x на 60, то есть количество секунд, которые не вошли в полные минуты.
Теперь при вводе 3602 программа должна корректно вывести 01:00:02, что соответствует 1 часу, 0 минутам и 2 секундам.
Взял из ChatGPT. За достоверность не ручаюсь)
Вот мой код:
use std::io;
fn main() {
let mut inp1 = String::new();
io::stdin().read_line(&mut inp1);
let x: i128 = inp1.trim().parse().expect("");
let h = x / 3600;
let m = x / 60;
let s = x % 60;
println!("{}:{}:{}", h, m, s);
}
При вводе 3602 он выводет не 1:00:02 а 1:60:2. В чем ошибка?