Скажите пж чего дает ошибку 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д