e-olymp 2034. WERTYU

Постановка задачи

Обычная ошибка при наборе состоит в том, что вы помещаете ваши руки на клавиатуру на один ряд правее верной позиции. Тогда «[latex]Q[/latex]» печатается как «[latex]W[/latex]», «[latex]J[/latex]» печатается как «[latex]K[/latex]» и т.д. Ваша задача состоит в расшифровке сообщения, напечатанного таким образом.

Входные данные

Входные данные состоят из нескольких строк текста. Каждая строка может содержать цифры, пробелы, прописные буквы (кроме [latex]Q, A, Z [/latex]) и знаки препинания, показанные выше [кроме обратной кавычки (`)]. Клавиши, обозначенные словами [Tab, BackSp, Control и т.д.], не представлены во входных данных.

Выходные данные

Вы должны заменить каждую букву и знак пунктуации тем, который находится непосредственно слева от него на клавиатуре QWERTY, изображенной выше. Пробелы во входных данных должны повторяться в выходных.

Тесты:

Входные данные Выходные данные
O S, GOMR YPFSU/ I AM FINE TODAY.
,u vpp; vpfr MY COOL CODE
VPFR RBRTUEJRTR. RBRTUFSU CODE EVERYWHERE, EVERYDAY

Код программы:

Описание решения:

Для решения поставленной задачи необходимо задать строку, в которой будем хранить все символы с условия, которые необходимо выводить. Так как не указано количество строк входных данных, то будем принимать до конца входного потока.

Для каждой строки будем просматривать все символы, и для каждого из них будем использовать следующий алгоритм:

  1. Если данный символ пробел – то выведем его на экран.
  2. Иначе, с помощью функции [latex]Indexof() [/latex] найдем номер вхождения данного символа в проверочном массиве y, и выведем предыдущий элемент из этого массива.
  3. Повторяем пункты 1, 2 до тех пор, пока не дойдем до конца строки [latex]x[/latex]. После этого перейдем на новую строку.

Условие задачи на сайте e-olymp.com можно найти здесь.

Код программы

Layout change

Условие

Часто происходит так, что пользователи, вводя текст на некотором языке, забывают переключить раскладку клавиатуры на этот язык. Если при этом пользователь не владеет методом слепой печати, он может обнаружить свою ошибку, уже набрав немалое количество текста. Чтобы избавить пользователя от необходимости перепечатывать весь текст в нужной раскладке, можно написать программу, которая сделает это за него.

Входные данные

На вход подается некоторая строка текста, который нужно изменить.

Выходные данные

Вывести исходную строку текста, «перепечатанную» в другой раскладке.

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

Тесты :

Ввод Вывод
Руддщб цщкдв! Hello, world!
Ghbdtn? vbh! Привет, мир!
Шэь пдфв ещ ыуу нщг I’m glad to see you
Rfr ltkf& Как дела?
ащк (ште ш = 0ж ш Б тж ш++) for (int i = 0; i < n; i++)

Код на Java:

Алгоритм:

В памяти хранятся строки соответствия. Каждому символу одной строки соответствует символ другой строки на той же позиции, но соответствующий символ — из другой раскладки.

Вводим строку, которую требуется заменить. Измененный вариант будет записываться в другой, временной строке.

Далее проходим по всей введенной строке. Если некоторый текущий символ можно заменить, записываем измененный символ. Если нет, то записываем исходный.

А в конце переписываем исходную строку и выводим ее:

Ссылки:

Рабочий код для тестирования на Ideone.com: Ideone.com

e-olymp 494 Гласные

Условие задачи:

К гласным буквам в латинском алфавите относятся буквы A, E, I, O, U и Y. Остальные буквы считаются согласными. Напишите программу, считающую количество гласных букв в тексте.

Входные данные:

Во входном файле содержатся одна строка текста, состоящая только из заглавных латинских букв и пробелов. Длина строки не превышает 100 символов.

Выходные данные:

В выходной файл вывести одно целое число – количество гласных во входном тексте.

Входные данные Выходные данные
BE HAAAAPPY ! 6
ZACHTITE PLEASE 6
BBC KLMN 0

Код программы:

Алгоритм решения:
Строка вводится пользователем согласно условию. Перебираем по каждой букве введенной строки или не равны они с соответствующей индексу гласной букве. Если равны, прибавляем счетчику 1. Далее в, любом случае, ищем по оставшимся гласным буквам.

Условие задачи на e-olymp.com
Проверка решения на e-olymp.com
Рабочий код на ideone.com

e-olymp 378. Таинственная записка

Задача e-olymp 378.

Условие

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

Закодированное сообщение: HPC PJVYMIY

Декодированное сообщение: ACM CONTEST

В этом примере выполнены следующие замены: H=A, P=C, C=M, J=O, V=N, Y=T, M=E иI=S.

Чтобы не заниматься кодированием и декодированием вручную, подруги просят Вас написать программу. Помогите девочкам!

Входные данные

В первой строке входного файла записано закодированное сообщение. Вторая строка –26 латинских букв верхнего регистра, представляющих собой код для соответствующего символа алфавита: первый символ дает код для A, второй для B и так далее. Используются только буквы верхнего регистра. В закодированном сообщении могут появиться пробелы, которые должны быть сохранены в выходной строке.

Выходные данные

В выходной файл вывести одну строку, в которой содержится расшифрованное сообщение.

Тесты

Входные данные Выходные данные
HPC PJVYMIYBLMRGJIASOPZEFDCKWYHUNXQTV ACM CONTEST
FDY GAI BG UKMY
KIMHOTSQYRLCUZPAGWJNBVDXEF
THE SKY IS BLUE
LJBSLJL IJWWDEJ
KCFAGWRZMEXDNUYHVBOIJLSTPQ
DECODED MESSAGE

Код

Решение

Чтоб расшифровать послание, нужно определить порядковый номер каждого символа, из введённого сообщения, в алфавите. Потом заменить их символом соответствующего порядкового номера из второй введённой строки.

Ссылка на Ideone