M: Удалить все внутри скобок

Дана строка. Удалите в ней все пары круглых скобок, вместе со всем их содержимым.

После нахождения открывающейся скобки программа должна найти ближайшую закрывающуюся скобку и удалить эти две скобки вместе со всем, что находится внутри. Отдельные закрывающиеся скобки игнорируются. Незакрытые открывающиеся скобки также игнорируются.
Ввод Вывод
(1+(2*3))+(
)+(

N: Замените 1 на one везде

В некоторой строке замените все символы 1 на слово one. Используйте методы find и replace.
Ввод Вывод
1+1=2
one+one=2

O: Заменить все вхождения слова

Даны три строки. Найдите в первой строке все вхождения второй строки и замените их на третью строку. Поиск продолжается начиная с символа, следующего за замененным (то есть если в результате замены образуется новое вхождения искомой строки, то ее менять не надо).
Ввод Вывод
Hello, world!
Hello
Hi
Hi, world!

MooMoo
Mo
Mooo
MooooMoooo

P: Удалите лишние пробелы

Дана строка. Удалите все лишние пробелы: из начала строки, из конца строки и повторяющиеся пробелы внутри строки.

Обязательно выводите конец строки после вывода самой строки!

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

Q: Поменять два слова местами

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

Код, подобный такому, приниматься не будет:

string S1, S2;
cin >> S1 >> S2;
cout << S1 << " "<< S2 << endl;

Не забывайте выводить символ конца строки!

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

R: Пословное обращение строки

Строка состоит из слов, разделенных пробелами. Создайте строку, полученную из данной перестановкой всех слов в обратном порядке и выведите результат.
Ввод Вывод
One two three
three two One