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 
 К началу страницы 
+ Ответить 
Artem7
сообщение 9.02.2012 13:20
Сообщение #3


Пионер
**

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

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


Цитата(IUnknown @ 8.02.2012 19:58) *

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


Хм что то тут поразмыслил ничего не приходит на ум, может потому что только начал работать с паскалем(((
Не могли бы вы сказать для чего?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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