(pascal) нужно составить программу подсчета количества часов, минут и секунд в данном числе суток. число суток ввести с клавиатуры. неправильно считает секунды, в чём ошибка? var s,m,h,days: integer; begin writeln('введите кол-во дней'); read(days); s: =86400; m: =s div 60; h: =m div 60; for var i: =1 to days do s: =s*days; m: =m*days; h: =h*days; writeln(s,' — секунд в ',days,' днях'); writeln(m,' — минут в ',days,' днях'); writeln(h,' — часов в ',days,' днях'); end.
Секунды, нужно считать также как минуты и часы без цикла.
Закомментируйте строчку с циклом for var i =1 to days do...
Впервую очередь, посмотрим на объявление переменных:
var s, m, h, days: integer;
Здесь объявляются переменные s, m, h, days типа integer, которые, как я понимаю, будут использоваться для хранения количества секунд, минут, часов и дней соответственно.
Теперь перейдем к основной части программы:
writeln('введите кол-во дней');
read(days);
Здесь выводится сообщение "Введите кол-во дней" и значение вводится с клавиатуры и сохраняется в переменной days.
s := 86400;
m := s div 60;
h := m div 60;
Здесь переменной s присваивается значение 86400 (количество секунд в сутках), затем с помощью оператора div значения s и m делятся на 60, чтобы получить количество минут и часов соответственно.
Теперь у нас есть цикл for, который будет выполняться от 1 до days, где days - введенное нами значение количества дней:
for var i := 1 to days do begin
s := s * days;
m := m * days;
h := h * days;
end;
В каждой итерации цикла счетчик i не используется, а вместо этого переменные s, m, h умножаются на days. Цель этого цикла, вероятно, заключается в том, чтобы умножить количество секунд, минут и часов в сутках на количество дней.
В завершении программы выводятся значения переменных s, m и h, которые, я полагаю, соответствуют количеству секунд, минут и часов в заданном количестве дней.
Однако, в данной программе есть ошибка. Использование цикла счетчика i не является необходимым, поскольку мы уже умножаем переменные s, m, h на значение days. Если мы оставим этот цикл без изменений, то каждое значение будет умножаться на days еще раз для каждой итерации цикла, что приведет к неправильным результатам.
Исправим это. Удалите весь цикл и оставьте только вывод результатов:
writeln(s, ' — секунд в ', days, ' днях');
writeln(m, ' — минут в ', days, ' днях');
writeln(h, ' — часов в ', days, ' днях');
В результате исправления ваша программа будет выглядеть следующим образом:
```
var
s, m, h, days: integer;
begin
writeln('Введите кол-во дней');
read(days);
s := 86400;
m := s div 60;
h := m div 60;
writeln(s, ' — секунд в ', days, ' днях');
writeln(m, ' — минут в ', days, ' днях');
writeln(h, ' — часов в ', days, ' днях');
end.
```
Теперь программа должна правильно подсчитывать количество секунд, минут и часов в заданном количестве дней.