1)У 60 человек есть кошка и собака.
у 20 - кошка и птичка
у 30 - собака и птичка
У 10 человек есть и кошка, и собака, и птичка. 1.1
Отсюда делаем вывод, что набор пар животных 60, 20 и 30 три раза посчитали тех у кого одновременно все эти трое видов животных есть.
теперь считаем:
у 60-10=50 есть только кошка и собака(без птички!) 1.2
у 20-10=10 есть только кошка и птичка(без собаки!) 1.3
у 30-10=20 есть только собака и птичка(без кошки!) 1.4
2)у 150 человек есть кошка
у 130 - собака
у 50 - птичка.
Это у кого возможно по два-три животных посчитаем, нужно их почистить:
2.1) уберем у кошколюбов тех у кого по 2-3 вида животных:
это 1.1, 1.2, 1.3 множества: 150-10-50-10=80 есть только кошки
2.2) уберем у собаководов, тех у кого по 2-3 вида животных:
это 1.1, 1.2, 1.4 множества: 130-10-50-20=50 есть только собаки.
2.3) уберем у птицефилов, тех у кого по 2-3 вида животных:
это 1.1, 1.3, 1.4 множества: 50-10-10-20=10 есть только птицы.
3) Теперь можем сложить чистую информацию:
чистые(не пересекающиеся с остальными) множества:
не забудем про 4.1) У 70 человек вообще нет домашнего животного
1.1, 1.2, 1.3, 1.4, 2.1, 2.2, 2.3, 3.1
10+50+10+20+80+50+10+70=300
Твоя программа берет строку, а затем разбивает ее на слова(словом считается любая последовательность, признак конца такой последовательности - пробел), выводит программа слова в квадратных скобках, каждое слово на новой строке.
Теперь давайте детально.
Название подключенных директив пропали, но это не беда, посмотрев код можно понять, что это была директива iostream и директива string.
iostream нам нужна для ввода/вывода, а string для работы со строками.
using namespace std используем для подключения пространства имён.
int main() - основная функция программы
string query - объявляем переменную типа string с именем query
getline(cin, query) считываем строку в переменную query
string word - cоздаем переменную типа string с именем word
for (int i = 0; i < query.size(); ++i) - запускаем цикл с параметром, который будет идти от 0 до размера строки(для увеличения i используется преинкремент)
В нашем цикле расположен условный оператор, в нём проверяется каждый символ, если это пробел, то мы выводим нашу переменную word на экран в квадратных скобочках + "обнуляем" переменную word, в ином случае мы добавляем к переменной word символ.
В конце программы мы выводим последнее значение word в квадратных скобках и ставим переход на новую строку (cout << '[' << word << ']' << endl;)
3412