Дана строка (считывается при помощи getline). Если в этой строке есть символ @
,
то выведите YES
, иначе выведите NO
.
Используйте метод find
, для поиска символа в строке.
Ввод | Вывод |
---|---|
email@179.ru |
YES |
Дана строка (считывается при помощи getline). Если в этой строке есть заглавная или строчная гласная буква
(A, O, I, U, E, Y) то выведите YES
, иначе выведите NO
.
Используйте метод find_first_of
, для поиска гласной в данной строке.
Ввод | Вывод |
---|---|
Hmmm... |
NO |
Подсчитайте, сколько раз в данной строке встречается символ @.
Указание: используйте метод find
, запоминая последнюю позицию найденного символа @
и продолжая поиск только с этой позиции. Подсчитывайте количество успешно завершенных
поисков.
Примечание: решения, в которых на каждом шаге метод find
вызывается дважды, приниматься не будут.
Ввод | Вывод |
---|---|
email@179.ru |
1 |
Подсчитайте количество заглавных и строчных гласных букв в данной строке.
Воспользуйтесь предыдущей задачей, заменив метод find
на find_first_of
.
Ввод | Вывод |
---|---|
We All Live In The Yellow Submarine! |
13 |
Даны две строки (с пробелами). Выведите YES
, если вторая
строка встречается внутри первой, иначе выведите NO
.
Ввод | Вывод |
---|---|
We All Live In The Yellow Submarine |
YES |
Даны две строки. Подсчитайте, сколько раз вторая строка встречается в первой, как ее подстрока. “Пересекающиеся” вхождения считаются несколько раз.
Ввод | Вывод |
---|---|
ABABA |
2 |
Даны две строки. Определите, можно ли из первой строки удалить несколько символов так, чтобы получилась вторая строка. Выведите YES
или NO
.
Ввод | Вывод |
---|---|
Program |
YES |
Program |
NO |
После запятой в тексте должен строять пробел. Дана строка, вставкой пробелов в неё добейтесь выполнения этого правила. Не надо вставлять пробел, если он там уже есть.
Ввод | Вывод |
---|---|
Question of Life,The Universe, and Everything |
Question of Life, The Universe, and Everything |
Дана строка. Продублируйте в ней все гласные буквы.
Ввод | Вывод |
---|---|
Question of Life, The Universe, and Everything |
Quueestiioon oof Liifee, Thee UUniiveersee, aand EEveeryythiing |
Дана строка (считывается при помощи getline). Удалите из нее все символы @
,
находя их при помощи метода find
и удаляя их при помощи метода erase
.
Не забывайте, что поиск нужно продолжать с места последнего нахождения данного символа, а не с начала строки!
Ввод | Вывод |
---|---|
Bilbo.Baggins@bagend.hobbiton.shire.me |
Bilbo.Bagginsbagend.hobbiton.shire.me |
Удалите из заданной строки все гласные буквы.
Ввод | Вывод |
---|---|
We All Live In The Yellow Submarine! |
W ll Lv n Th llw Sbmrn! |
Даны две строки. Удалите из первой строки все вхождения данного слова. После удаления слова поиск следующего вхождения начинается со следующего символа за удаленным словом (то есть если в результате удаления слова образуется еще одно такое же слово, то его удалять не надо).
Ввод | Вывод |
---|---|
AABCBC |
ABC |
Дана строка. Удалите в ней все пары круглых скобок, вместе со всем их содержимым.
После нахождения открывающейся скобки программа должна найти ближайшую закрывающуюся скобку и удалить эти две скобки вместе со всем, что находится внутри. Отдельные закрывающиеся скобки игнорируются. Незакрытые открывающиеся скобки также игнорируются.
Ввод | Вывод |
---|---|
(1+(2*3))+( |
)+( |
В некоторой строке замените все символы 1
на слово one
.
Используйте методы find
и replace
.
Ввод | Вывод |
---|---|
1+1=2 |
one+one=2 |
Даны три строки. Найдите в первой строке все вхождения второй строки и замените их на третью строку. Поиск продолжается начиная с символа, следующего за замененным (то есть если в результате замены образуется новое вхождения искомой строки, то ее менять не надо).
Ввод | Вывод |
---|---|
Hello, world! |
Hi, world! |
MooMoo Mo Mooo |
MooooMoooo |
Дана строка. Удалите все лишние пробелы: из начала строки, из конца строки и повторяющиеся пробелы внутри строки.
Обязательно выводите конец строки после вывода самой строки!
Ввод | Вывод |
---|---|
Hello, world! |
Hello, world! |
Программа получает на вход строку, состоящую из двух слов, разделенных пробелом (слово любая последовательность непробельных символов). Создайте строку, полученную из данной перестановкой слов и выведите ее.
Код, подобный такому, приниматься не будет:
string S1, S2; cin >> S1 >> S2; cout << S1 << " "<< S2 << endl;
Не забывайте выводить символ конца строки!
Ввод | Вывод |
---|---|
Hello, world! |
world! Hello, |
Строка состоит из слов, разделенных пробелами. Создайте строку, полученную из данной перестановкой всех слов в обратном порядке и выведите результат.
Ввод | Вывод |
---|---|
One two three |
three two One |
Напишите программу, которая посчитает количество смайликов в заданном тексте.
Смайликом будем считать последовательность символов, удовлетворяющую условиям:
;
(точка с запятой) либо :
(двоеточие)
ровно один раз
–
(минус) сколько угодно раз
(в том числе символ минус может идти ноль раз)
(
, )
, [
, ]
.
Например, нижеприведенные последовательности являются смайликами:
:) ;---------[[[[[[[[
в то время как эти последовательности смайликами не являются (хотя некоторые из них содержат смайлики):
:-)] ;-- -) ::-( :-()
В этой задаче надо будет посчитать количество смайликов, содержащихся в данном тексте.
Вводится одна строка текста, которая может содержать маленькие латинские буквы, пробелы, символы, которые могут встречаться в смайликах. Длина строки не превышает 100000 символов.
Выведите одно число — количество смайликов, которые встречаются в тексте.
Ввод | Вывод |
---|---|
:);------[[[[[] |
2 |
:-)];----; |
1 |
-)(---:--- |
0 |
hello :-) |
1 |
Первая строка входного файла содержит целое число N. Далее (начиная со следующей строки) идет текст, который может содержать много строк. Необходимо данный текст разбить на строки, длина которых не превосходит N и вывести его в файл. В каждой выведенной строке не должно быть пробелов в начале строки, пробелов в конце строки, слова в строке должны разделяться одним пробелом. При этом каждая строка должна быть максимально длинной, то есть строки формируются по “жадному” принципу: добавляем слова из входного файла до тех пор, пока длина полученной строки не превышает N, после этого ставим разрыв строки. Гарантируется, что во входном файле нет слов длиннее N символов.
Ввод | Вывод |
---|---|
15 |
We all live in |
Решите предыдущую задачу при условии, что текст в выводе программы должен быть выровнен по ширине: первый и последний символ строки должны быть непробельными, при необходимости между словами должны быть добавлены дополнительные пробелы, при этом количество пробелов между любыми двумя словами в одной строке не должно отличаться более, чем на 1.
Последняя строка в выводе должна быть выровнена по левому краю.
Ввод | Вывод |
---|---|
15 |
We all live in |
Дана строка, содержащее арифметическое выражение на языке C.
Строка может содержать только следующие символы: пробелы, цифры, латинские
буквы, знаки +
, -
, *
, /
,
%
, =
, (
, )
, ,
(запятая).
Гарантируется, что записанное арифметическое выражение синтаксически корректно и может содержать следующие лексемы:
+
, -
, *
, /
,
%
, =
.+
, -
.Расставьте в этом выражении пробелы в соответствии с правилами оформления программ:
После вывода выражения не забудьте вывести символ конца строки.
Ввод | Вывод |
---|---|
a=2+2 |
a = 2 + 2 |
Var1*( Var2+( 12-3 )/x+f( x,2*(a+b),-1))/(-4- - x) |
Var1 * (Var2 + (12 - 3) / x + f(x, 2 * (a + b), -1)) / (-4 - -x) |
Вещественное число задается следующим образом (форма Бэкуса-Наура):
<Number> ::= [<Sign>] <digit> {<digit>}[<Separator> <digit> {<digit>}] [<Exponent> [<Sign>] <digit> {<digit>}] <digit> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' <Sign> ::= '+' | '-' <Separator> ::= '.' <Exponent> ::= 'E' | 'e'
В форме Бэкуса-Наура знак ::=
означает определение, например,
<Sign> ::= '+' | '-'
означает, что понятие Sign
—
это один из двух символов +
или +
.
Значение в квадратных скобках означает, что это значение может встречаться, а может
и не встречаться, а значение в фигурных скобках означает, что это выражение может быть
записано 0, 1 или большее количество раз подряд. Например, записать
[<Sign>] <digit> {<digit>}
означает Sign
,
который может присутсвовать или отсутствовать, за которым идет digit
,
повторенная 1 или более раз.
Программа получает на вход одну строку, содержащащей не более 200 символов.
Выведите YES
, если эта строка является корректной записью
действительного числа в соответствии с данным определением, или NO
, в противном случае.
Ввод | Вывод |
---|---|
-8.1e+1 |
YES |
e+1 |
NO |
Задано числовое выражение. Необходимо вычислить его значение или установить,
что оно содержит ошибку. В правильном выражении могут встречаться знаки сложения,
вычитания, умножения, скобки и пробелы (пробелов внутри чисел быть не должно).
Приоритет операций стандартный. Все числа в выражении целые и принадлежат диапазону int
.
Также гарантируется, что все промежуточные вычисления умещаются в этот тип.
В первой строке вводится выражение. Его длина не превосходит 100 знаков. После выражения идет переход на новую строчку.
Выведите значение этого выражения или слово WRONG
, если значение не определено.
Ввод | Вывод |
---|---|
1+(2*2 - 3) |
2 |
1+a+1 |
WRONG |
1 1 + 2 |
WRONG |
Европейская комиссия планирует принять решение о том, что официальным языком Евросоюза станет английский. Был также разработан план упрощения английской письменности, который планируется реализовать за четыре года.
Первоочередной задачей будет избавление от буквы c
, которая в сочетаниях
сi
и сe
будет изменяться на s
, в сочетании ck
—
опускаться, а в остальных случаях заменяться на k
.
При этом все замены будут производиться в строгом порядке слева направо. То есть, например, в слове
success
сначала первая из двух букв c
заменится на k
, а затем вторая — на s
, то есть получится suksess
. А слово cck
превратится в kk
.
На второй год из английских слов изымут все удвоенные буквы:
ee
изменят на i
, oo
-
на u
, a в остальных комбинациях будут просто
писать одну букву вместо двух одинаковых. Такие замены также будут делать строго в порядке слева направо.
Так, слово ooo
превратится в uo
, а oou
— просто в u
(в нем сначала oo
заменится на u
, а затем uu
— на u
),
слово iee
превратится в i
(в нем сначала ee заменится на i
, а затем ii
— на i
).
На третий год на конце слова станут опускать букву е
, если эта буква
не является единственной буквой в слове.
Наконец, завершением реформы станет отмена артиклей (в английском языке три артикля:
а
, an
и the
).
При этом удаляться эти артикли будут только тогда,
когда они в исходном тексте были словами a, an, the. То есть, например, текст
the table
после реформ первых трех лет превратиться в th tabl
, а после реформы
четвертого года — просто в tabl
. А слово aaaaa
после реформы первых лет станет словом
a
, но поскольку изначально оно не было словом a
(артиклем), то оно в итоге так
и останется словом a
.
Напишите программу, которая будет переводить классический английский текст на Eвроинглиш.
Во входном файле записана одна строка текста, состоящая не более чем из 200 символов: латинских строчных и заглавных букв, пробелов и знаков препинания (в тексте могут встречаться: точка, запятая, вопросительный и восклицательный знаки, двоеточие, тире, точка с запятой, открывающаяся и закрывающаяся скобки, апострофы, кавычки). Заглавные буквы могут встречаться только в начале слова. Нигде подряд не могут стоять два пробела. В начале и в конце строки не может стоять пробел. Слова отделяются друг от друга пробелами и/или знаками препинания.
В выходной файл нужно выдать преобразованную строку с учетом следующих требований:
Ввод | Вывод |
---|---|
cacao and coffee |
kakao and kofi |
Cinderella! Where Is The Dress??? |
Sinderela! Wher Is Dres??? |
'A' is a letter |
'' is leter |
!!!Hello!!!A-the-"word" |
!!!Helo!!!--"word" |
Aaaa then the ckckck |
A then k |
"A"-the an |
""- |
A the an |
|
success |
sukses |
Билл преподаёт химию в школе, он подготовил несколько тестов для учеников. Каждый тест состоит из химической формулы и нескольких возможных результатов реакции. Среди этих результатов ученики должны выбрать правильный. Билл хочет убедиться в том, что, вводя свои тесты в компьютер, он не допустил опечаток, благодаря которым ученики могли бы отбросить неверные ответы, просто подсчитав число химических элементов в левой и правой частях уравнения (в правильном уравнении химической реакции должно соблюдаться равенство).
Напишите программу, которая поможет Биллу. Программа должна прочитать описание теста, состоящее из заданной левой части уравнения и нескольких возможных правых частей, и определить, равно ли количество химических элементов в каждой предложенной правой части уравнения количеству химических элементов в заданной левой части.
Билл формализовал задачу. И левая, и правая части уравнения представлены строкой символов без пробелов, состоящей из одной или более химических последовательностей, разделённых знаком плюс. Каждая последовательность имеет необязательный предшествующий целый множитель, относящийся ко всей последовательности, и несколько элементов. Каждый элемент может сопровождаться необязательным целым множителем, относящимся к нему. Элемент в этом уравнении может быть или отдельным химическим элементом, или целой последовательностью в круглых скобках. Каждый отдельный химический элемент представлен или одной прописной буквой, или прописной буквой, сопровождаемой строчной.
Ещё более формально, используя нотацию, аналогичную форме Бэкуса-Наура, можно написать:
<формула> ::= [<число>] <последовательность> {"+" [<число>] <последовательность>}
<последовательность> ::= <элемент> [<число>] {<элемент> [<число>]}
<элемент> ::= <химический элемент> | "(" <последовательность> ")"
<химический элемент> ::= <прописная буква> [<строчная буква>]
<прописная буква> ::= "A".."Z"
<строчная буква> ::= "a".."z"
<число> ::= "1".."9" {"0".."9"}
Будем говорить, что каждый отдельный химический элемент встречается в формуле всего X раз, если X —
сумма всех различных вхождений этого химического элемента, умноженных на все числа, относящиеся к ним. Например, в формуле C2H5OH+3O2+3(SiO2)
C
встречается всего 2 раза; H
встречается всего 6 раз (5 + 1); O
встречается всего 13 раз; (1 + 3 * 2 + 3 * 2); Si
встречается всего 3 раза. Все множители в формулах - целые числа не меньше 2, если заданы явно, или равны 1 - по умолчанию.
В первой строке входных данных находится формула - левая часть уравнения, во второй - одно число N - количество рассматриваемых правых частей, в каждой из следующих N строк - одна формула - предлагаемая правая часть уравнения.
Ограничения: 1 <= N <= 10, длина формулы не превосходит 100 символов, каждый отдельный химический элемент встречается всего не более 10000 раз в каждой формуле.
Для каждой из N заданных правых частей выведите одну строку вида
<формула левой части>==<формула правой части>если общее количество вхождений каждого отдельного химического элемента в левую часть равно общему числу вхождений этого химического элемента в правую часть. В противном случае выведите:
<формула левой части>!=<формула правой части>Здесь <формула левой части> должна быть замещена посимвольной копией формулы левой части, как она дана в первой строке входного файла, а <формула правой части> - замещена точной копией формулы правой части, как она дана во входном файле. В строках не должно быть пробелов.
Ввод | Вывод |
---|---|
C2H5OH+3O2+3(SiO2) 7 2CO2+3H2O+3SiO2 2C+6H+13O+3Si 99C2H5OH+3SiO2 3SiO4+C2H5OH C2H5OH+3O2+3(SiO2)+Ge 3(Si(O)2)+2CO+3H2O+O2 2CO+3H2O+3O2+3Si |
C2H5OH+3O2+3(SiO2)==2CO2+3H2O+3SiO2 C2H5OH+3O2+3(SiO2)==2C+6H+13O+3Si C2H5OH+3O2+3(SiO2)!=99C2H5OH+3SiO2 C2H5OH+3O2+3(SiO2)==3SiO4+C2H5OH C2H5OH+3O2+3(SiO2)!=C2H5OH+3O2+3(SiO2)+Ge C2H5OH+3O2+3(SiO2)==3(Si(O)2)+2CO+3H2O+O2 C2H5OH+3O2+3(SiO2)!=2CO+3H2O+3O2+3Si |
Примечание.Пример не содержит цифры ноль, потому что она выглядит практически так же, как символ химического элемента кислорода. Настоящие тесты могут содержать любые допустимые символы.