Другие языки программирования и технологии

Хотел составить программу в PascalABC, которая по введённой дате пишет его день недели.

Пишет: Ошибка времени выполнения: Input string was not in a correct format. Что делать?
program EndOf2K16;
var x: integer;
Begin;
writeln ('Введите дату в формате: Д-М');
read (x);
if x = (3-10) or (10-10) or (17-10) or (24-10) or (31-10) or (7-11) or (14-11)
or (21-11) or (28-11) or (5-12) or (12-12) or (19-12) or (26-12) then writeln
('Это понедельник');
if x = (4-10) or (11-10) or (18-10) or (25-10) or (1-11) or (8-11) or (15-11)
or (22-11) or (29-11) or (6-12) or (13-12) or (20-12) or (27-12) then writeln
('Это вторник');
if x = (5-10) or (12-10) or (19-10) or (26-10) or (2-11) or (9-11) or (16-11)
or (23-11) or (30-11) or (7-12) or (14-12) or (21-12) or (28-12) then writeln
('Это среда');
if x = (6-10) or (13-10) or (20-10) or (27-10) or (3-11) or (10-11) or (17-11)
or (24-11) or (1-12) or (8-12) or (15-12) or (22-12) or (29-12) then writeln
('Это четверг');
if x = (7-10) or (14-10) or (21-10) or (28-10) or (11-11) or (18-11)
or (25-11) or (2-12) or (9-12) or (16-12) or (23-12) or (30-12) then writeln
('Это пятница');
if x = (8-10) or (15-10) or (22-10) or (29-10) or (5-11) or (12-11) or (19-11)
or (26-11) or (3-12) or (10-12) or (17-12) or (24-12) or (31-12) then writeln
('Это суббота');
if x = (9-10) or (16-10) or (23-10) or (30-10) or (6-11) or (13-11) or (20-11)
or (27-11) or (4-12) or (11-12) or (18-12) or (25-12) then writeln
('Это воскресенье');
if x = (4-11) then writeln ('Это не только четверг, но и День Рождения Бабушки!!!');
End.
Vitaliy Nikolenko
Vitaliy Nikolenko
505
Полный бред! Но и его можно заставить работать.

var x: String;
Begin;
writeln ('Введите дату в формате: Д-М');
read (x);
if (x = '3-10') or (x = '10-10') or (x = '17-10') и т. д.

А вообще это делается не так. Сначала формируется нормальная дата и по уже ней определяется день недели.

Вот, ознакомьтесь
https://www.google.by/?gws_rd=ssl#q=паскаль+функция+день+недели
Мадияр Искаков
Мадияр Искаков
59 626
Лучший ответ
Это пишется так:

program scal;
const p:array[0..6]of string[15]=('Воскресенье','Понедельник',
'Вторник','Среда','Четверг','Пятница','Суббота');
var d,m,y,c,ya:longint;
begin
write('число месяц год: '); read(d,m,y); readln;
if m>2 then m:=m-3 else begin m:=m+9; y:=y-1 end;
c:=y div 100; ya:=y-100*c;
ya:=146097*c div 4+1461*ya div 4+(153*m+2)div 5+d+1721119;
writeln(p[(ya+1) mod 7]); readln
end.
AR
Azzam Rasulov
66 695
у меня глаза вытекли нахрен
будешь так писать - вычислю по айпи и поломаю пальцы

а если серьёзно, то такую дрянь без знаний про работу со строками и арифметические операции не пишут
Фарзали Алиев
Фарзали Алиев
50 628
Program EndOf2K16;
var x: longint;
Begin;
writeln ('Введите дату в формате: Д-М');
readln (x);
if x = (3-10) or (10-10) or (17-10) or (24-10) or (31-10) or (7-11) or (14-11)
or (21-11) or (28-11) or (5-12) or (12-12) or (19-12) or (26-12) then begin
writeln ('Это понедельник');
exit;
end
else if x = (4-10) or (11-10) or (18-10) or (25-10) or (1-11) or (8-11) or (15-11)
or (22-11) or (29-11) or (6-12) or (13-12) or (20-12) or (27-12) then begin
writeln ('Это вторник');
exit;
end;
if x = (5-10) or (12-10) or (19-10) or (26-10) or (2-11) or (9-11) or (16-11)
or (23-11) or (30-11) or (7-12) or (14-12) or (21-12) or (28-12) then begin
writeln ('Это среда');
exit;
end
else if x = (6-10) or (13-10) or (20-10) or (27-10) or (3-11) or (10-11) or (17-11)
or (24-11) or (1-12) or (8-12) or (15-12) or (22-12) or (29-12) then begin
writeln ('Это четверг');
exit;
end
else if x = (7-10) or (14-10) or (21-10) or (28-10) or (11-11) or (18-11)
or (25-11) or (2-12) or (9-12) or (16-12) or (23-12) or (30-12) then begin
writeln ('Это пятница');
exit;
end
else if x = (8-10) or (15-10) or (22-10) or (29-10) or (5-11) or (12-11) or (19-11)
or (26-11) or (3-12) or (10-12) or (17-12) or (24-12) or (31-12) then begin
writeln ('Это суббота');
exit;
end;
if x = (9-10) or (16-10) or (23-10) or (30-10) or (6-11) or (13-11) or (20-11)
or (27-11) or (4-12) or (11-12) or (18-12) or (25-12) then begin
writeln ('Это воскресенье');
exit;
end
else if x = (4-11) then writeln ('Это не только четверг, но и День Рождения Бабушки!!!');
End.

Работает?
Azzam Rasulov Не может работать. Ничего личного, но недалеко ушло от исходного запредельного бреда :) Например, (9-10) or (16-10) дает число, полученное наложением битов чисел -1 и 6, то есть число 6. И так далее.
Azzam Rasulov Тьфу, извиняюсь, не 6, а по-прежнему -1.
Мадияр Искаков С чего ЭТОМУ работать? Во-первых, в целочисленный тип ну никак не влезет дефис и, во-вторых, такая запись условного оператора никогда не прокатит.
Так ты и знак тире в х записываешь? поэтому и ошибка
Vladimir Kiselev
Vladimir Kiselev
129