Считайте со стандартного ввода символ и выведите его 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 |