10082. WERTYU
Клавиатура расклада QWERTY имеет
вид:
Когда печатался текст, то вместо
каждого нужного символа печатался тот, который расположен на клавиатуре справа.
То есть вместо Q печатался W, вместо W печатался E и так далее. Такая ошибка
может произойти при слепом печатании, если пальцы расположить на одну позицию
правее требуемой. Необходимо восстановить текст, который следовало напечатать.
Вход. Текст
состоит из нескольких строк и содержит в себе цифры, заглавные буквы (кроме Q,
A, Z), знаки пунктуации [кроме обратной кавычки (`)], пробелы.
Выход. Восстановить текст. Известно,
что пробел при печати не заменялся другим символом.
O S, GOMR YPFSU/
Пример выхода
I AM FINE TODAY.
обработка текста
Для каждого напечатанного символа
поставим в соответствие символ, который следовало печатать. Читая посимвольно
текст, заменяем каждый символ требуемым.
Занесем в символьный массив letter
раскладку клавиатуры. В переменной m типа map будем хранить отображение
печатаемых символов в реальные. То есть если m[‘a’] = ‘b’, то
каждый входной символ ‘a’ должен быть преобразован в ‘b’.
const char
letter[47] = {'`','1','2','3','4','5','6','7','8','9','0','-','=',
'Q','W','E','R','T','Y','U','I','O','P','[',']','\\',
'A','S','D','F','G','H','J','K','L',';','\'',
'Z','X','C','V','B','N','M',',','.','/' };
map<char,char> m;
Заполним отображение m данными, поставив в
соответствие символу letter[i + 1]
символ letter[i]. Пробелу поставим в
соответствие пробел.
for(i = 0; i < 46; i++)
m[letter[i+1]] = letter[i];
m[' ']
= ' ';
Читаем текст построчно в массив
char s[256]. Вычисляем длину текущей строки в переменной len. Для
каждого символа s[i] выводим m[s[i]].Символ перевода каретки ‘\n’
выводится после каждой прочитанной строки.
while(gets(s))
{
len = strlen(s);
for(i = 0; i
< len; i++)
printf("%c",m[s[i]]);
printf("\n");
}