Помощь - Поиск - Пользователи - Календарь
Полная версия: практика по курсовой паскаль АВС
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Шорох Анастасия
программа готова, нужно дописать проверку на ввод данных. если вдруг человек-дурак и вместо чисел пишет "перекпа" или "12.34.8787". что-то, а это даже не представляю как делать. ПАСКАЛЬ АВС
Код
uses crt;
var d,m,z,c,y,a,day: integer;
    e: integer;
    den: string;
begin
writeln('Введите дату в формате dd mm yyyy, где d - день, m - месяц, y - год');
writeln('Пример: 19 01 2012');
read(d,m,z);
c:=z div 100;
y:=z mod 100;
day:=abs(trunc(2.6*m-0.2)+d+y div 4+y+c div 4-2*c);
a:= day mod 7;
case a of
1: den:='пн';
2: den:='вт';
3: den:='ср';
4: den:='чт';
5: den:='пт';
6: den:='сб';
0: den:='вс';
end;
Case m of
1: If d>=21 Then Writeln('водолей') Else
   Writeln('козерог');
2: If d>=21 Then Writeln('рыбы') Else
   Writeln('водолей');
3: If d>=21 Then Writeln('овен) Else
   Writeln('рыбы');
4: If d>=21 Then Writeln('телец') Else
   Writeln('овен');
5: If d>=21 Then Writeln('близнецы') Else
   Writeln('телец');
6: If d>=22 Then Writeln('рак') Else
   Writeln('близнецы');
7: If d>=23 Then Writeln('лев') Else
   Writeln('рак');
8: If d>=24 Then Writeln('дева') Else
   Writeln('лев');
9: If d>=24 Then Writeln('весы') Else
   Writeln('дева');
10:If d>=24 Then Writeln('скорпион') Else
   Writeln('весы');
11:If d>=23 Then Writeln('стрелец') Else
   Writeln('скорпион');
12:If d>=22 Then Writeln('козерог') Else
   Writeln('стрелец');
end;
Writeln('день недели в указанной дате - ',den);
end.
Rian
незнаю, если ты не можешь гарантировать что пользователь введет числа, да еще и в нужном порядке, может принимать строку и разбирать посимовольно? например пока идут числа это "день" если встретили "не число" разделитель, потом опять числа это месяц, нашли "не число" разделитель
APAL
Уж не знаю, есть ли в ABC-Паскале, но в TurboPascal имеется:

При преобразовании строки в число надо будет обрабатывать код возрата.

Цитата
Val (процедура)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Преобразовывает строковое значение в его числовое представление.

Объявление:
Procedure Val(S; Var V; Var Code : Integer);

Где:
S - переменная со строковым типом. Должна представлять
последовательность символов, формирующих знаковое целое число.
V - переменная типа Real или Integer
Code - переменная типа Integer

Режим:
Windows, Real, Protected

Замечания:
Преобразовывает строковое значение (S) в его числовое представление, как это
происходит при чтении из текстового файла с помощью Read. Code - позиция, в
которой произошла ошибка при преобразовании, или нуль, если ошибки не было.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.