OriginalGriff
Карло прав, но его предположение не идет достаточно далеко.
Если вам нужно, чтобы строка была "в алфавите" - под которым вы подразумеваете, что результат должен содержать только буквенные символы от А до Я, от А до Я, пробел и некоторую пунктуацию, то вам нужно быть гораздо более умным, чем ваш существующий код.
Наборы символов не содержат только буквенные символы - самый маленький набор символов имеет ширину семь бит и содержит 128 символов (базовый ASCII), более нормальное использование-расширенный ASCII с восемью битами для 256 символов, и большинство систем в наши дни используют Unicode, который может содержать от 8 до 32 бит на символ для поистине монументального количества потенциальных символов!
Если вы хотите ограничить ввод и вывод определенным подмножеством любого доступного набора символов, то вам нужно создать массив, содержащий каждый допустимый символ a, b, c, d, ... z, A, B, C,...+, -,?, пробел, 1, 2, 3, ... 0, !, ", ', ... и так далее.
Затем найдите каждый символ на входе в этот массив, получите его индекс и измените его, добавив значения loop guard и shift. Затем используйте оператор модуля"%", чтобы вернуть диапазон значений обратно в область массива и извлечь оттуда выходной символ.
Это звучит сложно, но на самом деле это не так: попробуйте это на бумаге, и вы поймете, что я имею в виду!
Дай ему попробовать ... это действительно довольно легко, как только вы поймете это.