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

Вопрос по программированию на паскале Выдаёт ошибку Program1.pas(6) Операция = не применима к типам boolean и integer

Программа:
var
a:integer;
Begin
Writeln ('Введите четырёхзначное число');
Readln(a);
If (a div 1000) = (a div 100 mod 10) or
(a div 1000)=(a mod 10) or
(a div 1000)=(a mod 100 div 10) or
(a div 100 mod 10)=(a div 1000) or
(a div 100 mod 10)=(a mod 100 div 10) or
(a div 100 mod 10)=(a mod 10) or
(a mod 100 div 10)=(a div 1000) or
(a mod 100 div 10)=(a mod 10) or
(a mod 100 div 10)=(a div 100 mod 10) or
(a mod 10)=(a div 1000) or
(a mod 10)=(a div 100 mod 10) or
(a mod 10)=(a mod 100 div 10)
Then Writeln('В числе совпадает две цифры')
Else
Writeln('Ошибка');
End.
var
a:integer;
Begin
Writeln ('Введите четырёхзначное число');
Readln(a);
If (a div 1000 = a div 100 mod 10) or
(a div 1000=a mod 10) or
(a div 1000=a mod 100 div 10) or
(a div 100 mod 10=a div 1000) or
(a div 100 mod 10=a mod 100 div 10) or
(a div 100 mod 10=a mod 10) or
(a mod 100 div 10=a div 1000) or
(a mod 100 div 10=a mod 10) or
(a mod 100 div 10=a div 100 mod 10) or
(a mod 10=a div 1000) or
(a mod 10=a div 100 mod 10) or
(a mod 10=a mod 100 div 10)
Then Writeln('В числе совпадает две цифры')
Else
Writeln('Ошибка');
End.
Шашкин Сергей
Шашкин Сергей
74 685
Лучший ответ
Серёга Зекий То есть нужно было убрать лишние скобки?)
Зачем столько лишних действий? Отдели сначала все цифры, потом сравнивай, или конвертируй в строку.
Серёга Зекий Это как, извините?
Просто расставьте скобки.

Приоритет операторов в Pascal.
or имеет больший приоритет, чем =, поэтому a=b or c=d будет вычислено как (a=(b or c))=d.
Компилятор ругается на то, что выражение в скобках - булево сравнивается с целым.
Вам же надо писать (a=b) or (c=d)

ЗЫ
Этот код может даже работать правильно, но читать его невозможно.
Заведите хотя бы 4 переменные для цифр, а потом сравнивайте их
Леонид Хлыстов
Леонид Хлыстов
11 112
Ужас. Делается все проще и в меньше действий. А если будет 6 ти значное число? ☺