IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Нужно сделать расчёт времени, Помогите
Artem7
сообщение 8.02.2012 15:59
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Мужской

Репутация: -  0  +


Начали изучать Pascal и дали задачу вводим начальное время (ч,м,с) конечное время (ч,м,с) и надо сделать так чтобы он находил количество времени прошедшее от начала до конца и ответ чтобы выводил в формате (ч,м,с)
P.S Мы только начали проходить Pascal так что прошу как можно проще реализовать потомучто сказали с базовыми навыками реализовать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 8.02.2012 19:58
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Все просто, на самом деле:

Program Primer2;
Var
a,b,c:integer;
d,f,e:integer;
sec:longint;

Begin
writeln('введите начальное время:'); readln(a,b,c);
writeln('введите конечное время:'); readln(d,f,e);

{ Теперь переводим это время в секунды и из второго вычитаем первое }
sec := 0;
sec := sec + (e + 60 * f + 3600 * d) -
(c + 60 * b + 3600 * a);


{ Выводим разницу: чтоб получить часы надо разделить НАЦЕЛО секунды на 3600,
чтоб получить минуты - от общего числа секунд отнять 3600 * кол-во часов,
и результат поделить на 60 (тоже нацело). Ну, а с секундами - все просто: достаточно
взять остаток от деления sec на 60, это и будет число секунд }

writeln('Разница = ', sec div 3600, ':',
(sec - 3600 * (sec div 3600)) div 60, ':', sec mod 60);
readln;
End.

Зачем понадобилось присваивать sec нулю, а потом прибавлять к нему то, что я прибавил (вместо того, чтобы сразу, без "sec + " записать то же самое) - попробуй догадаться сам smile.gif (я бы попросил остальных участников пока не подсказывать, почему сделано именно так)

Сообщение отредактировано: IUnknown - 8.02.2012 19:59
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 19:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"