Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2009, 22:07   #1
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию объясните пожалуйста

Здравствуйте! Вот задание: Дана задача: в окне показывается текущее время с дискретностью 10с (часы, минуты, секунды) в трех часовых поясах.
Программу я написала, а вот почему h>24?? если h= или < 24 то программа не работает. Объяснение что , если в одном часовом поясе 01.00, а на другом на 3 часа раньше, а в сутках 24 часа, при вычислении мы получим отрицательное значение -02.00. следовательно нужно добавить еще 24 часа. Такое объяснение препода не устроило. как можно иначе объяснить?
Вот кусочек программы
Код:
h:=h-3;if h>24 then h:=h+24;
if s mod 10=0 then
writeln(h,' : ',m,' : ',s);
h:=h-11;
if h>24 then h:=h+24;
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 10.06.2009, 22:32   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Эм.. Какой-то странный кусочек.. Может, вот так?
Код:
 h:=h-3;
 if h<0 then h:=h+24;
 if s mod 10=0 then
  writeln(h,' : ',m,' : ',s);
 h:=h-11;
 if h<0 then h:=h+24;
Ведь проверяем на положительность..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.06.2009, 22:40   #3
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

Попробовала с Вашим кусочком, программа не те результаты выдает. вот полный код программы
Код:
program lab;
uses dos,crt;
var
h,m,s,s100:word;
begin
clrscr;
repeat window(31,11,50,16);
textbackground(5);
textcolor(+128);
Gettime(h,m,s,s100);
if s mod 10=0 then
writeln(h,' : ',m,' : ',s);

h:=h-3;if h>24 then h:=h+24;
if s mod 10=0 then
writeln(h,' : ',m,' : ',s);
h:=h-11;
if h>24 then h:=h+24;

if s mod 10=0 then
writeln(h,' : ',m,' : ',s);

until keypressed;


end.
работает исправно, все отлично, только в объяснении проблема...
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 10.06.2009, 22:51   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Работает потому, что переменные типа word, то есть, беззнаковые. И когда они получают значение меньше нуля, то становятся равными МАКСИМАЛЬНОЕ_ЗНАЧЕНИЕ_ТИПА_WORD - то, что получилось.

Попробуйте выводить значение h после того, как отнимаете от него 3 или 11 и увидите, что получается число за 65 тысяч.

Например: у меня сейчас 22 часа. Отнимаю от этот 30 (чтобы получить отрицательное значение) и вывожу результат:
Код:
65528
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.06.2009, 23:06   #5
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

Так чтобы он не выдавал значение за 65 тыс. я и задала h>24 ...
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 10.06.2009, 23:08   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну да.. Так может преподу не понравилось именно упоминание об отрицательном значении беззнаковой переменной?

Как тут по-другому объяснить-то? Он вообще сказал, что конкретно ему не нравится в объяснении? Или что-то вроде "не покатит"?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 10.06.2009 в 23:10.
Sazary вне форума Ответить с цитированием
Старый 10.06.2009, 23:19   #7
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

ничего конкретного он не сказал, типа "не покатит" и все. Вот и задаюсь теперь этим вопросом почему h>24?...
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 10.06.2009, 23:24   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А мое объяснение не подойдет? )

Вообще, на месте 24 может стоять и другое число (больше 24) (ведь если h-3 будет отрицательно, то конечное значение будет довольно большое).
Можно написать так:
Код:
if not (h<=24) then h:=h+24;
может, преподу больше понравится )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 10.06.2009 в 23:26.
Sazary вне форума Ответить с цитированием
Старый 10.06.2009, 23:31   #9
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

спасибо за помощь) попробую так объяснить.
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 11.06.2009, 20:59   #10
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

Спасибо ОГРОМЕННОЕ!!! защитила лабу))))
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните пожалуйста bunya Общие вопросы C/C++ 5 12.01.2009 22:02
объясните, пожалуйста brainstorm Помощь студентам 10 14.10.2008 23:49