(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.

ноолмллкшшп ноолмллкшшп    2   27.09.2019 07:40    8

Ответы
eldiraelf eldiraelf  08.10.2020 22:13

Секунды, нужно считать также как минуты и часы без цикла.

Закомментируйте строчку с циклом for var i =1 to days do...

ПОКАЗАТЬ ОТВЕТЫ
дина372 дина372  19.01.2024 20:11
Конечно! Давайте разберем эту программу пошагово, чтобы понять, в чем ошибка и как ее исправить.

Впервую очередь, посмотрим на объявление переменных:
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.
```

Теперь программа должна правильно подсчитывать количество секунд, минут и часов в заданном количестве дней.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика