Найти знак зодиака по дате в формате string - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Пользователь вводит дату рождения,программа должна выяснить знак зодиака по данной дате. Дата числится в формате string. Без констант

Решение задачи: «Найти знак зодиака по дате в формате string»

textual
Листинг программы
program zodiac;
uses crt;
const ds=['.','0'..'9'];
var
s:string[5];
i,k,t,k1,k2,f,c,d,m:integer;
begin
clrscr;
repeat
writeln('Введите дату рождения в формате ДД.ММ:');
readln(s);
k:=0;
for i:=1 to length(s) do
if not (s[i] in ds) then k:=k+1;
t:=0;
for i:=1 to length(s) do
if s[i]='.' then t:=t+1;
if k>0 then writeln('Введены недопустимые символы!');
if t>1 then writeln('Введено более одной точки!');
if pos('.',s)<>3 then writeln('Точка стоит не на месте!');
if length(s)<>5 then writeln('Введено неверное количество символов!');
val(copy(s,4,2),f,c);
m:=f;k1:=0;
if not(m in [1..12])then
  begin
    k1:=1;
    writeln('Неверно введен месяц!');
   end;
val(copy(s,1,2),f,c);
d:=f;k2:=0;
if ((m=2)and(d>29))or((m in [1,3,5,7,8,10,12])and(d>31))
or((m in [4,6,9,11])and(d>30))or(d<1)then
 begin
  k2:=1;
  writeln('Неверно введен день!');
 end;
if(k>0)or(k1>0)or(k2>0)or(t>1)or(pos('.',s)<>3 )or(length(s)<>5)then writeln('Повторите ввод.');
until(k=0)and(k1=0)and(k2=0)and(t=1)and(pos('.',s)=3 )and(length(s)=5);
case m of
1:case d of
  1..19:write('Козерог');
  20..31:write('Водолей');
  end;
2:case d of
  1..18:write('Водолей');
  19..29:write('Рыбы');
  end;
3:case d of
  1..20:write('Рыбы');
  21..31:write('Овен');
  end;
4:case d of
   1..21:write('Овен');
   22..30:write('Телец');
   end;
5:case d of
   1..2:write('Телец');
   21..31:write('Близнецы');
   end;
6:case d of
   1..21:write('Близнецы');
   22..30:write('Рак');
   end;
7:case d of
   1..22:write('Рак');
   23..31:write('Лев');
   end;
8:case d of
   1..22:write('Лев');
   23..31:write('Дева');
   end;
9:case d of
   1..22:write('Дева');
   23..30:write('Весы');
   end;
10:case d of
   1..22:write('Весы');
   23..31:write('Скорпион');
   end;
11:case d of
   1..22:write('Скорпион');
   23..30:write('Стрелец');
   end;
12:case d of
   1..21:write('Стрелец');
   22..31:write('Козерог');
   end;
end;
readln
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы