Расшифровать пароль - 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.

Объяснение кода листинга программы

  1. Создается переменная n, которая представляет собой целое число.
  2. Создается массив s типа array[1..1000] of char, который будет использоваться для хранения символов.
  3. Создается переменная c, которая также является символом.
  4. Заполняется массив s симвомами '?'.
  5. Считывается значение переменной n.
  6. Запускается цикл for, который выполняется n раз.
  7. Внутри цикла создается переменная j, которая инициализируется значением 0.
  8. Запускается вложенный цикл while, который выполняется до тех пор, пока не будет достигнут конец строки (eoln).
  9. Внутри вложенного цикла считывается символ и увеличивается значение переменной j на 1.
  10. Если символ в массиве s равен символу, введенному пользователем (c), то этот символ заменяется на введенный.
  11. Если символ в массиве s не равен символу, введенному пользователем, и при этом значение переменной k равно 0, а символ введенного пользователем не является символом '?', то значение переменной k устанавливается равным значению переменной i.
  12. После окончания вложенного цикла while считывается значение переменной n и выполняется вывод на экран.
  13. Если значение переменной k больше 0, то выводится сообщение no,, за которым следует значение переменной k.
  14. Для каждого символа в массиве s, начиная с индекса i и до конца массива, выводится этот символ.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы