Расшифровать пароль - Turbo Pascal
Формулировка задачи:
Ребят, помогите, пожалуйста. Вот, собственно, условие:
Мой код
Спойлер
Я, короче, попытался переворачивать массив, чтобы вместо строчек были столбики, а вместо столбиков - строчки. Потом, я подумал, что можно сделать, типа, если все элементы строчки(бывшего столбика) равны, выводить один из элементов строчки, иначе - пока ничего не делать. Так вот, этот код работает только для полностью известных паролей типа: 555; 557. В моем случае он выбьет 55, что, в принципе, правильно. Только вот я никак не могу додуматься, что мне делать, если одним из элементов пароля будет '?'? Я попытался переводить его в '0' и записывать в массив, а что дальше - вообще без понятия.
Как сделать так, чтобы если в строке двумерного массива были только нули и одинаковая цифра (005050, например), выводить эту цифру на экран? В остальном я попробую разобраться самостоятельно.
Ребят, пожалуйста, срочно надо, помогите, а.
Решение задачи: «Расшифровать пароль»
textual
Листинг программы
var n,i,j,l,k:integer; s:array[1..1000] of char; c:char; begin for l:=1 to 1000 do s[l]:='?'; readln(n); for i:=1 to n do begin j:=0; while not eoln do begin read(c);j:=j+1; if s[j]='?' then s[j]:=c else if (s[j]<>c) and (k=0) and (c<>'?') then k:=i; end; readln; end; if k>0 then writeln('no,',k) else for i:=1 to j do write(s[i]); end.
Объяснение кода листинга программы
- Создается переменная
n
, которая представляет собой целое число. - Создается массив
s
типаarray[1..1000] of char
, который будет использоваться для хранения символов. - Создается переменная
c
, которая также является символом. - Заполняется массив
s
симвомами '?'. - Считывается значение переменной
n
. - Запускается цикл
for
, который выполняетсяn
раз. - Внутри цикла создается переменная
j
, которая инициализируется значением 0. - Запускается вложенный цикл
while
, который выполняется до тех пор, пока не будет достигнут конец строки (eoln
). - Внутри вложенного цикла считывается символ и увеличивается значение переменной
j
на 1. - Если символ в массиве
s
равен символу, введенному пользователем (c
), то этот символ заменяется на введенный. - Если символ в массиве
s
не равен символу, введенному пользователем, и при этом значение переменнойk
равно 0, а символ введенного пользователем не является символом '?', то значение переменнойk
устанавливается равным значению переменнойi
. - После окончания вложенного цикла
while
считывается значение переменнойn
и выполняется вывод на экран. - Если значение переменной
k
больше 0, то выводится сообщениеno,
, за которым следует значение переменнойk
. - Для каждого символа в массиве
s
, начиная с индексаi
и до конца массива, выводится этот символ.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д