Не та раскладка, Артур
Ну, и так как я изучаю C# в данный момент, забавные задачки и решение я буду выкладывать здесь. В комментариях при желании можете делиться решением этих задачек на 1С.
Артур с энтузиазмом писал код для нового приложения — вдохновение накрыло его аж на три часа!
Но когда он решил запустить программу… всё сломалось. 🧨 Оказалось, всё это время он печатал в русской раскладке!
Переписывать вручную — долго и мучительно.
Напиши программу, которая автоматически заменит символы, набранные в русской раскладке, на соответствующие английские, по расположению клавиш.
Артур с энтузиазмом писал код для нового приложения — вдохновение накрыло его аж на три часа!
Но когда он решил запустить программу… всё сломалось. 🧨 Оказалось, всё это время он печатал в русской раскладке!
Переписывать вручную — долго и мучительно.
Напиши программу, которая автоматически заменит символы, набранные в русской раскладке, на соответствующие английские, по расположению клавиш.
Артур даже приложил схему клавиатуры, надеясь, что ты разрулишь ситуацию
Формат входных данных:
Первая строка — натуральное число N — количество строк кода (1 ≤ N ≤ 1000).
Далее идут N строк — строки кода, набранные в русской раскладке вместо английской.
Первая строка — натуральное число N — количество строк кода (1 ≤ N ≤ 1000).
Далее идут N строк — строки кода, набранные в русской раскладке вместо английской.
Формат выходных данных:
N строк, в которых русские буквы заменены на соответствующие английские, остальные символы (пробелы, цифры, знаки препинания и т.д.) остаются без изменений.
N строк, в которых русские буквы заменены на соответствующие английские, остальные символы (пробелы, цифры, знаки препинания и т.д.) остаются без изменений.
Рассмотрим первый тест:
На вход получаем строки:
На вход получаем строки:
1
ште т=сщтмукеюещште32(сщтыщдуюкуфвдшту())ж
ште т=сщтмукеюещште32(сщтыщдуюкуфвдшту())ж
Заменим все символы в строке кода в русской раскладке на соответствующие символы в английской раскладке клавиатуры.
Выведем результат в консоль:
int n=convert.toint32(console.readline());
Примечания:
- В коде могут присутствовать символы, которые не требуют замены: цифры, скобки, арифметические операторы, пробелы, . и т.п.
- Все буквы в коде — строчные.
- Гарантируется, что изначально в коде не должно было быть русских букв.
РЕШЕНИЕ
Итак, что я тут делаю? Первым делом я создаю две переменные, в которые помещаю строки с раскладками клавиатуры. Для чего это нужно? Вспоминаем, что такое строка в C#. Это набор символов, к каждому из которых мы можем обратиться по индексу в строке.
Здесь у нас вложенные циклы. Цикл первого уровня выводит на экран сообщения из переменной message, мы сообщения складываем посимвольно во вложенных циклах.
Перед тем, как поместить символ в переменную мы определяем является ли этот символ буквой, если не является, мы просто этот символ складываем в переменную message, если же является, то мы берем этот символ из строки и сравниваем его с каждым символом из переменной с русскими символами. Тем самым мы определяем индекс, по которому мы можем обратиться к этому символу. Логично, что по тому же самому индексу мы можем обратиться к переменной, которая содержит строку с символами на латинице. Мы берем этот самый "латинский" символ и складываем его в переменную message.
Как только мы показали сообщение на экран, переменную message нам нужно очистить, то есть заменить значение на пустую строку. Это необходимо, если строк у нас больше одной и в эту переменную нужно помещать новые символы.
Здесь у нас вложенные циклы. Цикл первого уровня выводит на экран сообщения из переменной message, мы сообщения складываем посимвольно во вложенных циклах.
Перед тем, как поместить символ в переменную мы определяем является ли этот символ буквой, если не является, мы просто этот символ складываем в переменную message, если же является, то мы берем этот символ из строки и сравниваем его с каждым символом из переменной с русскими символами. Тем самым мы определяем индекс, по которому мы можем обратиться к этому символу. Логично, что по тому же самому индексу мы можем обратиться к переменной, которая содержит строку с символами на латинице. Мы берем этот самый "латинский" символ и складываем его в переменную message.
Как только мы показали сообщение на экран, переменную message нам нужно очистить, то есть заменить значение на пустую строку. Это необходимо, если строк у нас больше одной и в эту переменную нужно помещать новые символы.
с#
программирование