Здраствуйте, нужна ваша помошь. В написании программы я столкнулся с такой проблемой:нужно написать проверку в кодировании и декодировании, что бы наши закодированые и декодированые буквы не вылазили за русский или английский алфавит в ASCII. Создавать отдельно массив букв не хочется,проверку для закодирования мне помогли написать...теперь хотелось бы узнать, как можно изменть ее для декодирования. Код: //шифрование void encode(char *buf, int m, int shift) { for (int i=0; i<m; i++){ if ((buf>122)||(buf<97)) {buf=' ';continue;} if (shift>122-buf) buf=96+(shift-122+buf); buf += shift; } } //дешифрование void decode(char *buf, int m, int shift) { for (int i=0; i<m; i++){ buf= buf-shift; } }
эээээм. Думаю задача решается путем включения АЛУ мозга А вобще, буковки, которые после добавления shift вылазят за диапазон 97-122, просто переносятся на другую часть диапазона, которая после сдвига, как бы, будет типа пустой. В данном случае "вылезающие" буковки имеют коды от 123-shift до 122 (поскольку buf += shift) и заменяются на соотетствующие коды в пределах от 97 до 96+shift. Будут обрабатываться русские или английские буковки - зависит от выбранного диапазона, который зависит от кодировки. На этот счет смотри справочную литературу. Как сделать декодирование. Просто надо делать сдвиг в другую сторону, учитывая вылазовывание из диапазона, т.е. часть кодов от 97 до 96+shift будут заменяться соответствующими из интервала от 123-shift до 122. ЗЫ: если я все правильно понял.
Хм..а я не понял...если тебе не трудно, можеш написать как будет выглядить декодировка? Очень прошу..