Помощь - Поиск - Пользователи - Календарь
Полная версия: Определить день недели
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Spinne
Задали мне задачку с таким условием:
ИСПОЛЬЗУЯ СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ И ДРУГИЕ ТИПЫ ПЕРЕМЕН-
НЫХ,СОСТАВИТЬ ПРОГРАММУ - ОПРЕДЕЛИТЬ ДЕНЬ НЕДЕЛИ В ЗАВИСИМОСТИ ОТ ДАТЫ В ТЕКУЩЕМ ГОДУ.
Я наклепал следующее:
Код
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
вот не моя прогр. (откуда не оч. помню.. 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
Оччень интересно...
Spinne
А как насчёт схемы алгоритма?
fms
только там не оч. определяется правильность введенной даты.. т.е. можно вводить номер месяца, например, больше 12.. но эт не сложно добавить наверно..
Spinne
И всё така алгоритм!
fms
дак а что алгоритм?! я ведь не буду программу словами переписывать.. а алгоритма у меня нету..
Spinne
Цитата
дак а что алгоритм?!

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

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

___
свои мысли он уже показал.. см. самое начало ..
Spinne
Ну так вот говорю всем ПОЖАЛУЙСТА!!!!!!
А насчёт халявы плохо...
НУ НЕ ПОНИМАЮ Я СХЕМУ АЛГОРИТМА!
trminator
А чем тебя твоя-то программа не устраивает? Вроде работает...
Spinne
Работает, согласен. А алгоритм надо. Без него лабораторную не приймут...
fms
2Spinne

дак если ты написал 1-ую свою программу.. значит ты знаешь ее алгоритм?! дак в чем проблема?  :-/
Spinne
А ты можешь начертить схеиу алгоритма согласно ГОСТ 19.701-90?
fms
2Spinne

я не знаю что это за ГОСТ. как то не надо мне было подобного.. тебе что блок схема нужна что ли?!
Spinne
может быть........... :-[
fms
2Spinne
а ты хоть немного представление имеешь как это сделать?! т.е. может вам на занятиях рассказывали?.. или как? я просто например не знаю про этот ГОСТ. т.к. не оч. надо было..
поточнее расскажи как и что.. может что нить придумается..
Spinne
Уважаемый fms, пришли мне свой имейл, и я зброшу тебе пару файликов. А там посмотрим.........В январе сессия............печально..............
fms
2Spinne
только я она.
я конечно понимаю что у тебя сессия.. но у меня тоже. так что..
что же ты весь семестр делал?..
мыло пришлю.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.