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

> Правила раздела!

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

> Два вопроса от начинающего., Первый кому интересно, второй мне важнее!
Студент*21в.
сообщение 17.03.2009 18:53
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской
Реальное имя: Александр

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


Здравствуйте все!
Нашел одну незамысловатую програмку и что-то не пойму в ней пару вещей.
Вот она:
var
IsCorrectDate:boolean;
d,m,y:integer;
Procedure InputDate(var d,m,y:integer;var correctly:boolean);
begin
write('Введите дату в формате ДД ММ ГГГГ:');
readln(d,m,y);
correctly:=(d>=1)and(d<=31)and(m>=1)and(m<=12)and(y>=1582)and(y<=4903)
end;
procedure WriteDay(d,m,y:integer);
const
Days_of_week:array[0..6]of string[11]=(' воскресенье ',' понедедельник',
' вторник ',' среда ',' четверг ',' пятница ',' суббота ');
var
c,w:integer;
begin
if m<3 then
begin
m:=m+10;
y:=y-1
end
else
m:=m-2;
c:=y div 100;
y:=y mod 100;
w:=abs(trunc(2.6*m-0.2)+d+y div 4+y+c div 4-2*c)mod 7;
writeln(Days_of_week[w])
end;
begin
repeat
InputDate(d,m,y, IsCorrectDate);
if IsCorrectDate then
WriteDay(d,m,y)
until not IsCorrectDate
end.

По описанию программа вычисляет день недели по заданой дате. Так и есть, но почему-то не правильно.
Слизал с бесплатного ресурса, встречались опечатки. Может кто-нибудь заметит где неточность.
И второй вопрос по теории. Не пойму как связаны переменные "IsCorrectDate" и "correcctly" , ну то есть по какому правилу компилятор определяет что "correctly" это "IsCorrectDate"?
Помогите пожалуйста разобраться.

Сообщение отредактировано: volvo - 17.03.2009 18:58
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 17.03.2009 18:58
Сообщение #2


Гость






Цитата
Не пойму как связаны переменные "IsCorrectDate" и "correcctly"
Correctly - это формальный параметр процедуры, а IsCorrectDate - фактический, который ты передаешь в нее. То есть, все, что процедура InputDate делает с Correctly, на самом деле происходит с IsCorrectDate.

Цитата
Может кто-нибудь заметит где неточность.
Может, тебе лучше обратиться к автору этой программы?

P.S. Тегами пользуйся, программа без них нечитаема совершенно.
 К началу страницы 
+ Ответить 
Студент*21в.
сообщение 17.03.2009 19:30
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской
Реальное имя: Александр

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


Цитата

Correctly - это формальный параметр процедуры, а IsCorrectDate - фактический, который ты передаешь в нее. То есть, все, что процедура InputDate делает с Correctly, на самом деле происходит с IsCorrectDate.

Спасибо. Понял. А как это в программе записывается, т.е. в какой строчке компилятору сообщается что "correctly" это "IsCorrectDate". Наверно здесь в 31 строке:
InputDate(d,m,y, IsCorrectDate);
?

Цитата
Может, тебе лучше обратиться к автору этой программы?

да там концов не найти с 256bit.ru слизал. Хорошо хоть что сайт до сих пор работает) Клевый сайт! good.gif
Цитата
P.S. Тегами пользуйся, программа без них нечитаема совершенно.

ok!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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