Скажите пж чего дает ошибку 201? - Free Pascal
Формулировка задачи:
program N_2;
uses crt;
const rrr=100500;
var p: boolean;
ll:integer;
n,m,k,l,q,nnn,w,e,r,t,y,u,i,o,aa,ad,af,ag,ah,aj,ak,al,da,z,x,c,boo,rr,r1,r2,r3,pptk :integer;
begin
p:=false;
randomize;
clrscr;
writeln ('ЏҐ*в*Ј®*®ў§«*¬лў*⥫м. ‚ўҐ¤ЁвҐ Ї*а®«м');
readln (ll);
if (ll=rrr)
then
begin
n:=random(5);
writeln ('');
m:=random (1000);
q:=m div 100;
w:=m mod 100 div 10;
e:=m mod 10;
k:=random (1000);
r:=k div 100;
t:=k mod 100 div 10;
y:=k mod 10;
l:=random (1000);
u:=l div 100;
i:=l mod 100 div 10;
o:=l mod 10;
z:=random (1000);
aa:=z div 100;
ad:=z mod 100 div 10;
af:=z mod 10;
x:=random (1000);
ag:=x div 100;
ah:=x mod 100 div 10;
aj:=x mod 10;
c:=random (1000);
ak:=c div 100;
al:=c mod 100 div 10;
da:=c mod 10;
if (n=0)
then
begin
boo:=m ;
writeln (z,x,m,c,k,l);
end;
if (n=1)
then
begin
boo:=m ;
writeln (m,x,z,k,c,l);
end;
if (n=2)
then
begin
boo:=m ;
writeln (l,m,c,k,z,x);
end;
if (n=3)
then
begin
boo:=m ;
writeln (z,k,c,m,x,l);
end;
if (n=4)
then
begin
boo:=m ;
writeln (l,x,k,z,c,m);
end;
if (n=5)
then
begin
boo:=m; ;
writeln (c,k,x,l,m,z);
end;
pptk:=0;
while (pptk<3) do
begin
writeln ('‚ўҐ¤ЁвҐ Є®¤ ў§«®¬*');
readln (rr);
r1:=rr div 100;
r2:=rr mod 100 div 10;
r3:=rr mod 10;
if (r1=q) and (r2=w) and (r3=e)
then
p:=true;
if (p=false)
then
begin
pptk:=pptk+1;
if (not(r1=q) and (r2=w) and (r3=e)) or ((r1=q) and not(r2=w) and (r3=e)) or ((r1=q) and (r2=w) and not(r3=e))
then writeln ('2');;
if (not(r1=q) and not(r2=w) and (r3=e)) or ((r1=q) and not(r2=w) and not(r3=e)) or (not(r1=q) and (r2=w) and not(r3=e))
then writeln ('1');;
if not(r1=q) and not(r2=w) and not(r3=e)
then writeln ('0');;
end;
end;
end;
readln
end.
P.S. Уже кипит мозг
Задачи как таковой нет, однако чисто ради испробования собственных сил написал чет-типо логической игры - "Пентагоновзламыватель Паскаль"
Решение задачи: «Скажите пж чего дает ошибку 201?»
textual
Листинг программы
const
defPass = '100500';
CodeLen = 3; CodeNum=1000; CodeCnt = 6;
var
Codes: String[CodeCnt*CodeLen];
Code: String[CodeLen];
s: String;
i, n, e: Integer;
begin
Randomize;
Write('Пароль: '); ReadLn(s);
if s=defPass then begin
Str(Random(CodeNum):CodeLen,Code);
Codes:=Code; n:=Random(CodeCnt);
for i:=1 to n do begin
Str(Random(CodeNum):CodeLen,s); Codes:=s+Codes;
end;
for i:=1 to CodeCnt-n-1 do begin
Str(Random(CodeNum):CodeLen,s); Codes:=Codes+s;
end;
for i:=1 to Length(Codes) do if Codes[i]=' ' then Codes[i]:='0';
WriteLn(Codes); n:=3;
while (n>0) and (e<CodeLen) do begin
Dec(n); Write('Код: '); ReadLn(s);
i:=CodeLen; if i>Length(s) then i:=Length(s);
e:=0; for i:=i downto 1 do Inc(e,Ord(s[i]=Code[i]));
if e<CodeLen then WriteLn('Совпало: ',e);
end;
if e=CodeLen then WriteLn('Бинго!');
end;
end.
Объяснение кода листинга программы
Список действий в коде:
- Объявление констант и переменных.
- Инициализация строки
Codesс использованием строкиdefPass. - Получение пароля от пользователя.
- Проверка, совпадает ли введенный пароль со значением переменной
defPass. - Генерация кодов с помощью функции
Randomи добавление их к строкеCodes. - Замена пробелов в строке
Codesна '0'. - Вывод строки
Codes. - Запрос количества цифр, которые нужно проверить (переменная
n). - Пока
nбольше 0 и номер текущей цифры не превышает длину строкиCodes, происходит проверка совпадения цифр из строкиsс соответствующими цифрами из строкиCode. - Если количество совпавших цифр равно длине строки
Code, выводится сообщениеБинго!. Ошибка 201 может возникнуть, если введенный пароль не совпадает со значением переменнойdefPass.