Member 13842565 Ответов: 3

Не могли бы вы объяснить, что происходит в подчеркнутом коде ?


У меня есть код для преобразования заданных секунд в формат [HH:MM:SS]. Не могли бы вы объяснить, что происходит в подчеркнутом коде?

Что я уже пробовал:

#include <iostream>
using namespace std;

int  main()
{

	int t,h, m, s;


	cout << "Enter a time in seconds: ";
	cin >> t;
	h = t/3600;
	t = t%3600;
	m = t/60;
	t = t%60;
	s = t;

	cout<<endl;cout<<endl;cout<<endl;

	cout<<"The time in HH:MM:SS format is: "<<h<<" hours, "
		<<m<<" minutes, and "<<s<<" seconds!";
cout<<endl;cout<<endl;cout<<endl;
	return 0;
}

Rick York

Если вы запускаете этот код в отладчике, вы должны иметь возможность видеть значения при каждом вычислении, и все это должно стать вам ясно.

3 Ответов

Рейтинг:
1

Leo Chapiro

Взгляните на Оператор модуля: Оператор модуля в C и C++ - учебники по программированию - Cprogramming.com[^]:

Take a simple arithmetic problem: what's left over when you divide 11 by 3? The answer is easy to compute: divide 11 by 3 and take the remainder: 2. But how would you compute this in a programming language like C or C++? It's not hard to come up with a formula, but the language provides a built-in mechanism, the modulus operator ('%'), that computes the remainder that results from performing integer division.

Предположим, что t = 3602,

h = t/3600; // h = 1 из-за целого числа

t = t%3600; // t = 3602 - 3600 = 2;

и так далее...


Richard MacCutchan

3602, а не 36002.

Leo Chapiro

Спасибо, Ричард, я в курсе.

Рейтинг:
1

Patrice T

Цитата:
У меня есть код для преобразования заданных секунд в формат [HH:MM:SS]. Не могли бы вы объяснить, что происходит в подчеркнутом коде?

А как насчет наблюдения за выполнением кода с помощью отладчика ?
Никогда не бывает слишком рано, чтобы прочитать языковую документацию тоже.

Ваш код ведет себя не так, как вы ожидаете, и вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что вы должны делать, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[^]
1.11 — отладка программы (пошаговое выполнение и останова) | выучить C++[^]
Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Рейтинг:
0

Pete O'Hanlon

Действительно, время берется и делится вниз с помощью стандартного деления / и модуль упругости % арифметика. Каждый раз , когда вы видите t=, это дальнейшее деление времени на основе модуля.