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

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

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

 
 Ответить  Открыть новую тему 
> Цель задачи: Вводим дату и программа показывает день недели., помогите найти ошибку
slipknot178
сообщение 19.12.2012 19:34
Сообщение #1





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

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


	
var

a,b,c: integer; 

p,v,s,f: real;

begin

write (’Введите число:’);

readln (a);

writeln (‘Введите месяц’);

readln (b);

writeln ('Введите год');

readln (c);

p:=(c mod 4);
v:=(c div 4);

if p=0 then case b of
	    1: b:=31;
	    2: b:=2*31-3;
            3: b:=3*31-3;
	    4: b:=4*31-4;
	    5: b:=5*31-4;
  	    6: b:=6*31-5;
	    7: b:=7*31-5;
	    8: b:=8*31-5;
	    9: b:=9*31-6;
	    10: b:10*31-6;
	    11: b:=11*31-7;
	    12: b:=12*31-7;
	    else
	    end;
		s:=v*364+(c-v)*365+b+a;
		f:=s div 7;
		case f of
			0: writeln ('воскресение');
			1: writeln ('понедельник');
			2: writeln ('вторник');
			3: writeln ('среда');
			4: writeln ('четверг');
			5: writeln ('пятница');
			6: writeln ('суббота');
		end;
       else case b of
	    1: b:=31;
	    2: b:=2*31-2;
            3: b:=3*31-2;
	    4: b:=4*31-3;
	    5: b:=5*31-3;
  	    6: b:=6*31-4;
	    7: b:=7*31-4;
	    8: b:=8*31-4;
	    9: b:=9*31-5;
	    10: b:10*31-5;
	    11: b:=11*31-6;
	    12: b:=12*31-6;
	    else
	    end;
		s:=v*364+(c-v)*365+b+a;
		f:=s div 7;
		case f of
			0: writeln ('воскресение');
			1: writeln ('понедельник');
			2: writeln ('вторник');
			3: writeln ('среда');
			4: writeln ('четверг');
			5: writeln ('пятница');
			6: writeln ('суббота');
		end;
readln;
end. 
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MeatCrash
сообщение 20.12.2012 17:49
Сообщение #2


Пионер
**

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

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


У меня есть эта программа, только она по другому выполнена, если надо, могу выложить.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MeatCrash
сообщение 22.12.2012 13:40
Сообщение #3


Пионер
**

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

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


Вот текст этой программы. Она работает как надо.

Program Days;
Var
  IsCorrectDate: Boolean;
  d,m,y: Integer;

Procedure InputDate(var d,m,y: Integer; var Correctly: Boolean);
begin
  Write('Vvedite datu v formate DD MM GGGG: ');
  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] =
  ('Voscresenye','Ponedelnik','Vtornik','Sreda','Chetverg','Pyatnica',
  'Subbota');
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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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