Считайте со стандартного ввода символ и выведите его ASCII-код.
Решите эту задачу с использованием только одной переменной типа char
.
Программа получает на вход один символ с ASCII кодом от 33 до 126.
Ввод | Вывод |
---|---|
A |
65 |
Выведите подряд, без пробелов, все символы, лежащие в таблице ASCII между двумя заданными символами.
Программа получает на вход один символ с ASCII-кодом от 33 до 126, являющийся начальным символом интервала и число от 33 до 126, являющееся ASCII-кодом символа, завершающего интервал.
Ввод | Вывод |
---|---|
A 68 |
ABCD |
0 57 |
0123456789 |
Для данного символа, считанного со стандартного ввода, проверьте, является ли он цифрой.
Решение оформите в виде функции bool is_digit(char c)
. В решении нельзя использовать циклы. В решении нельзя
использовать константы с неочевидным значением типа 48 или 57.
Сдайте на проверку только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
is_digit('0') |
true |
is_digit('A') |
false |
Дана строка, переведите все символы этой строки в нижний регистр (английские буквы меняются, все остальные символы не меняются).
Решение оформите в виде функции void to_lower(string & s)
,
получающей в качестве параметра строку по ссылке и изменяющая символы этой строки.
Сдайте на проверку только тело функции.
Код | Вывод |
---|---|
string s = "Hello, world!"; |
hello, world! |
Дана строка и параметры \(i\), \(k\). Напишите функцию, которая возвращает подстроку данной строки, начиная с символа с индексом \(i\) и длиной \(k\).
Решение оформите в виде функции string substr(const string & s, int i, int k)
.
Сдайте на проверку только тело функции.
Если \(i<0\), или \(i\ge s.size()\) или \(k<0\), то функция должна возвращать пустую строку.
Если \(i+k\ge s.size()\), то возвращается строка длиной \(s.size() - i\), то есть до конца строки.
Код | Вывод |
---|---|
cout << substr("abcdefghijk", 2, 4) << endl; |
cdef |
cout << substr("abcdefghijk, 6, 10000) << endl; |
ghijk |
Дана строка и параметры \(i\), \(k\). Напишите функцию, которая удаляет из данной строки подстроку начиная с символа с индексом \(i\) и длиной \(k\).
Решение оформите в виде функции void erase(string & s, int i, int k)
,
которая модифицирует данную строку, не возвращая значения.
Если \(i<0\), или \(i\ge s.size()\) или \(k<0\), то функция не модифицирует исходную строку.
Если \(i+k\ge s.size()\), то удаляются все символы начиная с \(i\)-го до конца строки.
Программа не должна использовать дополнительные вспомогательные строки.
Сдайте на проверку только тело функции.
Код | Вывод |
---|---|
string s = "abcdefghijk"; |
abghijk |
string s = "abcdefghijk"; |
abcdef |
Дана строка \(s\), параметр \(i\), другая строка \(t\). Напишите функцию, которая вставляет в данную строку \(s\) начиная с индекса \(i\) строку \(t\).
Решение оформите в виде функции void insert(string & s, int i, const string & t)
,
которая модифицирует данную строку, не возвращая значения.
Если \(i\lt0\) или \(i\gt s.size()\), функция не модифицирует исходную строку.
Программа не должна использовать дополнительные вспомогательные строки.
Сдайте на проверку только тело функции.
Код | Вывод |
---|---|
string s = "abcde"; |
abxyzcde |
Дана строка, возможно, содержащая пробелы. Извлеките из этой строки все символы, являющиеся цифрами
и составьте из них новую строку.
Решение оформите в виде функции string extract_digits(const string & s)
, получающей
на вход исходную строку s
и возвращающую новую строку, содержащую только цифры
данной строки.
Указание. Заведите строку Answer
, пройдите по всем символам данной строки,
при обнаружении цифры добавляйте
ее в конец строки Answer
, увеличивая ее размер на 1.
По завершении цикла верните значение Answer
.
Сдайте на проверку только тело функции.
Код | Вывод |
---|---|
string s = "2+2=4"; |
224 |
Дано слово, состоящее только из заглавных и строчных латинских букв. Проверьте, верно ли что это слово читается одинаково как справа налево, так и слева направо (то есть является палиндромом), если считать заглавные и строчные буквы не различающимися.
Решение оформите в виде функции bool is_palindrome(const string & s)
.
При решении этой задачи нельзя пользоваться вспомогательными массивами или строками.
Сдайте на проверку только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
is_palindrome("Radar") |
true |
is_palindrome("true") |
false |
Дана строка, состоящая из n цифр, между которыми стоит n-1 знак операции, каждый из которых может быть либо +, либо -. Вычислите значение данного выражения.
Решение оформите в виде функции int eval(const string & s)
.
Сдайте на проверку только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
eval("1+2-3") |
0 |
Дана строка, содержащее запись в виде символов целого числа от
\(0\) до \(10^9-1\). Определите значение этого числа в виде переменной
int. Решение задачи оформите в виде функции
int str_to_int(const string & s)
.
Сдайте на проверку только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
str_to_int("179") |
179 |
Дана целое число от \(-10^9+1\) до \(10^9-1\). Запишите это число в строку, то есть выполните преобразование, обратное предыдущей задаче (но только допускаются отрицательные числа).
Решение задачи оформите в виде функции
string int_to_str(int n)
.
Сдайте на проверку только тело функции.
Код | Вывод |
---|---|
string s = int_to_str(-179); |
-179 |
В шифре Цезаря каждый символ заменяется на другой символ, третий по счету в алфавите после данного, с цикличность. То есть символ A заменяется на D, символ B - на E, символ C - на F, ..., символ Z на C. Аналогично строчные буквы заменяются на строчные буквы. Все остальные символы не меняются.
Дана строка, зашифруйте ее при помощи шифра Цезаря. Решение
оформите в виде функции void caesar_cipher(string & s)
.
Сдайте на проверку только тело функции.
Указание: сделайте функцию char caesar_cipher(char c)
,
шифрующую один данный символ.
Код | Вывод |
---|---|
string s = "In a hole in the ground there lived a hobbit."; |
Lq d kroh lq wkh jurxqg wkhuh olyhg d kreelw. |
Дана строка, возможно, содержащая пробелы. Определите количество слов в этой строке. Слово — это несколько подряд идущих букв (как заглавных, так и строчных).
Решение оформите в виде функции int count_words(const string & s)
.
При решении этой задачи нельзя пользоваться дополнительными строками и массивами.
Сдайте на проверку только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
count_words("Yesterday, all my troubles seemed so far away") |
8 |
Дана строка. Найдите в этой строке самое длинное слово и выведите его.
Если в строке несколько слов одинаковой максимальной длины, выведите первое из них.
Решение оформите в виде функции string longest_word(const string & s)
.
Сдайте на проверку только тело функции.
Код | Вывод |
---|---|
cout << longest_word("In a hole in the ground there lived a hobbit.") << endl; |
ground |
Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была заглавной, а остальные буквы - строчными.
Решение оформите в виде функции void capitalization(string & s)
.
Сдайте на проверку только тело функции.
Код | Вывод |
---|---|
string s = "In a hole in the ground there lived a hobbit."; |
In A Hole In The Ground There Lived A Hobbit. |
Дано выражение одно из следующих видов: “A+B”, “A-B” или “A*B”, где A и B - целые числа от 0 до 109. Определите значение этого выражения.
Решение оформите в виде функции long long eval(const string & s)
.
Сдайте на проверку только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
eval("2*2") |
4 |
eval("100-101") |
-1 |
Даны две строки, возможно, содержащие пробелы.
Выведите слово YES
, если первая строка является подстрокой
второй строки или слово NO
в противном случае.
Решение оформите в виде функции bool is_substring(const string & pattern, const string & source)
.
Сдайте на проверку только тело функции.
От вас не требуется писать реализацию Кнута–Моррисса–Пратта, Рабина–Карпа или Ахо–Корасик.
Вызов функции | Возвращаемое значение |
---|---|
is_substring("hole in the ground", "In a hole in the ground there lived a hobbit.") |
true |
is_substring("hole on the ground", "In a hole in the ground there lived a hobbit.") |
false |
Дана строка, содержащая одно или более целых чисел от 0 до 109, разделенных знаками “+” или “-”. Вычислите значение этого выражения.
Решение оформите в виде функции eval(const string & s)
.
Сдайте на проверку только тело функции.
Вызов функции | Возвращаемое значение |
---|---|
eval("21+7-10") |
18 |
Строка состоит из целых чисел, принимающих значения от 0 до 109, разделенных знаками операций “+”, “-” и “*”. Вычислите значение этого выражения выполняя действия по правилам арифметики.
Тесты к этой задаче закрытые.
Ввод | Вывод |
---|---|
10-2*3 |
4 |