Проверка и изменение пароля

Смотрим функцию change_password: ввели новый пароль, ввели новый пароль ещё раз, сравнили — совпадает, вывели сообщение «Пароль успешно изменен» и... И всё. Локальные переменные с новым паролем умерли при выходе из функции. Это раз.

Смотрим функцию valid_passport и её вызов. Вызов осуществляется с одним аргументом. Следовательно правильный пароль берётся как значение второго аргумента по умолчанию, т.е. "qwerty123". При таком раскладе смена пароля невозможна в принципе. Это два.

В этой программе если уж что-то и хранить в глобальной переменной, то текущий правильный пароль. Для введённого (проверяемого) пароля лучше использовать локальную переменную и передавать её в функцию проверки пароля как параметр.

За неоправданное использование рекурсии вместо цикла надо руки отбивать. Переделай на do-while.

Спасибо)
Поняла, что можно было сделать все гораздо проще, теперь стыдно показывать предыдущий код))

Почему предпочтение отдается циклам, а не рекурсии в подобных случаях?
Я совсем новичок в программировании и для меня это пока не очевидно)

Пожалуйста ))
Не ошибается тот, кто ничего не делает. Простите за банальность.

Всё можно было сделать и гораздо проще... и гораздо сложнее. Не то, что бы сложнее, но с бОльшей функциональностью. Кстати, такая программка — неплохой полигон для тренировки. Например:

  1. Оформить это в виде класса.
  2. Хранить правильный пароль в файле, что бы он сохранялся от запуска к запуску.
  3. Хранить пароль в открытом виде — «Фу-фу-фу!» (с) доктор Быков. Хранить надо солёный хэш.
  4. Почему хэш пароля должен обязательно храниться в файле? Это может быть база данных, сетевой ресурс или что-то ещё. Значит надо обеспечить для класса работу с потоками ввода-вывода.
  5. Наверное можно ещё что-то придумать... ;)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.