Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Определить день недели

Автор: Spinne 6.12.2003 0:32

Задали мне задачку с таким условием:
ИСПОЛЬЗУЯ СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ И ДРУГИЕ ТИПЫ ПЕРЕМЕН-
НЫХ,СОСТАВИТЬ ПРОГРАММУ - ОПРЕДЕЛИТЬ ДЕНЬ НЕДЕЛИ В ЗАВИСИМОСТИ ОТ ДАТЫ В ТЕКУЩЕМ ГОДУ.
Я наклепал следующее:

Код
program Lab411;
type month=1..12;
    days=1..31;
var
   x:integer;
   y:real;
   d:days;
   m:month;
label 1,2;
BEGIN
writeln('введите число, месяц');
readln(d,m);
if m>12 then goto 1;
case m of
1,3,5,7,8,10,12:if d>31 then goto 1;
2:if d>28 then goto 1;
4,6,9,11:if d>30 then goto 1;
end;
case m of
1:x:=d;
2:x:=31+d;
3:x:=59+d;
4:x:=90+d;
5:x:=120+d;
6:x:=151+d;
7:x:=181+d;
8:x:=212+d;
9:x:=243+d;
10:x:=273+d;
11:x:=304+d;
12:x:=334+d;
end;
y:=x-7*(int(x/7));
if y=0 then writeln('вторник');
if y=1 then writeln('среда ');
if y=2 then writeln('четверг');
if y=3 then writeln('пятница');
if y=4 then writeln('суббота ');
if y=5 then writeln('воскресенье');
if y=6 then writeln('понедельник');
goto 2;
1: writeln('ошибка ввода ');
2:END.

Вроде как работает, но всё ли правильно?

Автор: fms 6.12.2003 1:38

вот не моя прогр. (откуда не оч. помню.. sad.gif ). опр-ет день недели и кол-во дней между 2-мя датами.

Код
program Days; {$N+,E+}
var
 r,f:comp;
 y,d,m:integer;

procedure pause; assembler;
asm
     mov      ah,8
     int      21h
     or      al,al
     jne      @
     int      21h
@:
end;

procedure pro80;
var
 w:byte;
 st:string[11];
begin
 f:=365*y+d+31*(m-1);
 if m<=2 then
 begin
   f:=f+trunc((y-1)/4);
   f:=f-trunc(3*(trunc((y-1)/100+1))/4)
 end
 else begin
   f:=f-trunc(0.4*m+2.3)+trunc(y/4);
   f:=f-trunc(3/4*(trunc(y/100)+1))
 end;
 w:=trunc(f-trunc(f/7)*7);
 case w of
   0: st:='вс'; 1: st:='пн';
   2: st:='вт'; 3: st:='четв'; 4: st:='среда';
   5: st:='пт'; 6: st:='сб '
 end;
 writeln('это день --- ',st); writeln
end;

procedure read_dt;
const sp='введите деньмесяцгод: [dd mm yyyy]: ';
begin
 write(sp); read(d,m,y); pro80
end;

begin
 writeln; write('определение дня недели и ');
 writeln('кол-ва дней м/у датами.'); writeln;
 read_dt; r:=f; read_dt;
 writeln('между этими датами -- ',
   abs(f-r):15:0,' дней.'); pause
end { Days }.

Автор: Spinne 6.12.2003 14:44

Оччень интересно...

Автор: Spinne 6.12.2003 15:03

А как насчёт схемы алгоритма?

Автор: fms 6.12.2003 23:52

только там не оч. определяется правильность введенной даты.. т.е. можно вводить номер месяца, например, больше 12.. но эт не сложно добавить наверно..

Автор: Spinne 7.12.2003 16:04

И всё така алгоритм!

Автор: fms 7.12.2003 16:12

дак а что алгоритм?! я ведь не буду программу словами переписывать.. а алгоритма у меня нету..

Автор: Spinne 7.12.2003 23:12

Цитата
дак а что алгоритм?!

Помоги мне свой составить!

Автор: fms 8.12.2003 1:17

:o
для начала.. хотя бы "пожалуйста" можно говорить..  >:(
а потом.. если у тебя есть 2 варианта решений.. то ты сам не сможешь составить?!

Автор: oleg309 8.12.2003 1:26

Цитата
:o
для начала.. хотя бы "пожалуйста" можно говорить..  >:(
а потом.. если у тебя есть 2 варианта решений.. то ты сам не сможешь составить?!

СОГЛАСЕН! >:( И свои мысли покажи! Халявы сдеся нету!!

Автор: fms 8.12.2003 2:05

2oleg309
по собственному опыту?  ;D

___
свои мысли он уже показал.. см. самое начало ..

Автор: Spinne 8.12.2003 22:56

Ну так вот говорю всем ПОЖАЛУЙСТА!!!!!!
А насчёт халявы плохо...
НУ НЕ ПОНИМАЮ Я СХЕМУ АЛГОРИТМА!

Автор: trminator 8.12.2003 23:56

А чем тебя твоя-то программа не устраивает? Вроде работает...

Автор: Spinne 9.12.2003 2:52

Работает, согласен. А алгоритм надо. Без него лабораторную не приймут...

Автор: fms 9.12.2003 14:25

2Spinne

дак если ты написал 1-ую свою программу.. значит ты знаешь ее алгоритм?! дак в чем проблема?  :-/

Автор: Spinne 9.12.2003 22:38

А ты можешь начертить схеиу алгоритма согласно ГОСТ 19.701-90?

Автор: fms 10.12.2003 0:27

2Spinne

я не знаю что это за ГОСТ. как то не надо мне было подобного.. тебе что блок схема нужна что ли?!

Автор: Spinne 10.12.2003 1:01

может быть........... :-[

Автор: fms 10.12.2003 1:13

2Spinne
а ты хоть немного представление имеешь как это сделать?! т.е. может вам на занятиях рассказывали?.. или как? я просто например не знаю про этот ГОСТ. т.к. не оч. надо было..
поточнее расскажи как и что.. может что нить придумается..

Автор: Spinne 10.12.2003 1:31

Уважаемый fms, пришли мне свой имейл, и я зброшу тебе пару файликов. А там посмотрим.........В январе сессия............печально..............

Автор: fms 10.12.2003 2:07

2Spinne
только я она.
я конечно понимаю что у тебя сессия.. но у меня тоже. так что..
что же ты весь семестр делал?..
мыло пришлю.