Строки и символы

Упражнения

A: ASCII-код символа

Считайте со стандартного ввода символ и выведите его код.

Программа получает на вход один символ с кодом от 33 до 126.

Ввод Вывод
A
65

B: Символ с данным ASCII-кодом

Считайте со стандартного ввода целое число и выведите ASCII-символ с таким кодом. Решите эту задачу с использованием только одной переменной типа int.

Программа получает на вход число от 33 до 126.

Ввод Вывод
65
A

C: Таблица ASCII

Выведите все символы ASCII с кодами от 33 до 126 и их коды в следующем виде:

Вывод
! 33
" 34
# 35
...
} 125
~ 126

D: Символы в заданном интервале

Выведите подряд, без пробелов, все символы, лежащие в таблице ASCII между двумя заданными символами.

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

Ввод Вывод
A
D
ABCD
0
9
0123456789

E: IsDigit

Для данного символа, считанного со стандартного ввода, проверьте, является ли он цифрой. Программа должна вывести слово YES, если символ является цифрой, или слово NO.

Ввод Вывод
0
YES
A
NO

F: ToUpper

Напишите функцию char ToUpper(char c), которая переводит символ в верхний регистр, то есть для строчной буквы латинского алфавита возвращает сооветствующую заглавную букву латинского алфавита, а для остальных символов возвращает тот же символ.

Считайте один символ со стандартного ввода и переведите его в верхний регистр.

Ввод Вывод
f
F
F
F
4
4

G: Сменить регистр символа

Напишите функцию char CaseChange (char c), меняющую регистр символа, то есть переводящую заглавные буквы в строчные, а строчные - в заглавные, остальные символы не меняющие.

Считайте один символ со стандартного ввода, выведите результат работы данной функции.

Ввод Вывод
f
F
F
f
4
4

H: Нижний регистр

Дана строка, возможно, содержащая пробелы. Считайте эту строку и переведите все символы этой строки в нижний регистр. Решение оформите в виде функции string ToLower (string S), получающей в качестве параметра строку и возвращающую новую строку.

Для перевода одного символа в нижний регист напишите отдельную функцию.

Ввод Вывод
Hello, world!
hello, world!

I: Палиндром

Дано слово, состоящее только из заглавных и строчных латинских букв. Проверьте, верно ли что это слово читается одинаково как справа налево, так и слева направо (то есть является палиндромом), если считать заглавные и строчные буквы не различающимися. Выведите слово YES, если слово является палиндромом и словов NO, если не является.

Ввод Вывод
Radar
YES
YES
NO

J: Извлечь цифры

Дана строка, возможно, содержащая пробелы. Извлеките из этой строки все символы, являющиеся цифрами и составьте из них новую строку.

Ввод Вывод
2+2=4
224

K: Значение выражения - 1

Дана строка, состоящая из n цифр (т.е. однозначных чисел), между которыми стоит n-1 знак операции, каждый из которых может быть либо +, либо -. Вычислите значение данного выражения.

Ввод Вывод
1+2-3
0

L: Значение выражения - 2

Дано выражение одно из следующих видов: “A+B”, “A-B” или “A*B”, где A и B - целые числа от 0 до 109. Определите значение этого выражения.

Решение оформите в виде функции Eval(S).

Ввод Вывод
2*2
4
100-101
-1

M: Шифр Цезаря

В шифре Цезаря каждый символ заменяется на другой символ, третий по счету в алфавите после данного, с цикличностью. То есть символ A заменяется на D, символ B - на E, символ C - на F, ..., символ Z на C. Аналогично строчные буквы заменяются на строчные буквы. Все остальные символы не меняются.

Дана строка, зашифруйте ее при помощи шифра Цезаря. Решение оформите в виде функции CaesarCipher (S, k), возвращающей новую строку. <сode>S — исходная строка, k — величина сдвига. Функцию нужно вызывать со значением k=3.

Указание: сделайте функцию char CaesarCipherChar(char c, int k), шифрующую один символ.

Ввод Вывод
In a hole in the ground there lived a hobbit.
Lq d kroh lq wkh jurxqg wkhuh olyhg d kreelw.

N: Количество слов

Дана строка, возможно, содержащая пробелы. Определите количество слов в этой строке. Слово — это несколько подряд идущих букв латинского алфавита (как заглавных, так и строчных).

Ввод Вывод
Yesterday, all my troubles seemed so far away
8

O: Самое длинное слово

Дана строка. Найдите в этой строке самое длинное слово и выведите его. Если в строке несколько слов одинаковой максимальной длины, выведите первое из них.

Ввод Вывод
In a hole in the ground there lived a hobbit.
ground

P: Капитан Флинт

Капитан Флинт зарыл клад на Острове сокровищ. Он оставил описание, как найти клад. Описание состоит из строк вида: “North 5”, где первое слово – одно из “North”, “South”, “East”, “West”, а второе число – количество шагов, необходимое пройти в этом направлении.

Напишите программу, которая по описанию пути к кладу определяет точные координаты клада, считая, что начало координат находится в начале пути, ось OX направлена на восток, ось OY – на север.

Программа получает на вход последовательность строк указанного вида, завершающуюся строкой со словом “Treasure!”. Программа должна вывести два целых числа: координаты клада.

Ввод Вывод
North 5
East 3
South 1
Treasure!
3 4

Q: Слова с прописной буквы

Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была заглавной, а остальные буквы - строчными.

Ввод Вывод
In a hole in the ground there lived a hobbit.
In A Hole In The Ground There Lived A Hobbit.

R: Значение выражения - 3

Дана строка, содержащая одно или более целых чисел от 0 до 109, разделенных знаками “+” или “-”. Вычислите значение этого выражения.

Ввод Вывод
21+7-10
18

S: Поиск подстроки

Даны две строки, возможно, содержащие пробелы. Выведите слово YES, если первая строка является подстрокой второй строки или слово NO в противном случае.

Ввод Вывод
hole in the ground
In a hole in the ground there lived a hobbit.
YES
hole on the ground
In a hole in the ground there lived a hobbit.
NO

T: Самая частая буква

Дана строка, возможно, содержащая пробелы. Определите, какая буква латинского алфавита (или какие буквы) в этой строке встречается чаще всего. При решении этой задачи заглавные и строчные буквы считаются одинаковыми, а прочие символы, не являющиеся буквами, не учитываются.

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

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

Ввод Вывод
- We all live in the Yellow Submarine!
EL
5

U: Палиндром - 2

Дана строка, возможно, содержащая пробелы. Определите, является ли эта строка палиндромом, при условии, что заглавные и строчные буквы не различаются, а все символы, не являющиеся буквами, должны быть пропущены. Выведите слово YES, если слово является палиндромом и словов NO, если не является.

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

Ввод Вывод
Was it a rat I saw?
YES
abca
NO

V: IP-адрес

В сети интернет каждому компьютеру присваивается четырехбайтовый код, который принято записывать в виде четырех чисел, каждое из которых может принимать значения от 0 до 255, разделенных точками. Вот примеры правильных IP-адресов:

127.0.0.0
192.168.0.1
255.0.255.255

Программа получает на вход строку из произвольных символов. Если эта строка является корректной записью IP-адреса, выведите YES, иначе выведите NO.

Ввод Вывод
127.0.0.1
YES

W: Детская задача

Хорошо известна задача-шутка, в которой требуется продолжить числовой ряд:

1
11
21
1211
111221
312211
13112221
1113213211
...

Напишите программу, которая по данному числу k≤25 выводит k-е число в этом ряду.

Ввод Вывод
4
1211

X: Форматирование текста

Дана текстовая строка, содержащая буквы латинского алфавита, пробелы, запятые и точки. Отформатируйте этот текст по следующим правилам:

  1. В начале и конце строки не должно быть пробелов.
  2. Все слова разделяются ровно одним пробелом.
  3. Точки и запятые пишутся слитно с предыдущим словом, после знака препинания ставится пробел.

Выведите полученную строку.

Ввод Вывод
    Hello ,    world .
Hello, world.

Y: Палиндром - 3

Дано слово, состоящее только из строчных латинских букв. Определите, какое наименьшее число букв нужно дописать к этому слову справа так, чтобы оно стало палиндромом.

Тесты к этой задаче закрытые.

Ввод Вывод
abcd
3
abb
1

Z: Значение выражения - 4

Строка состоит из целых чисел, принимающих значения от 0 до 109, разделенных знаками операций “+”, “-” и “*”. Вычислите значение этого выражения выполняя действия по правилам арифметики.

Тесты к этой задаче закрытые.

Ввод Вывод
10-2*3
4