Расшифровать пароль - 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и до конца массива, выводится этот символ.