К основному контенту

Интересная задачка для развития. Решено через Map. C++

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


#include "stdafx.h"
#include <iostream>
#include <map>
#include <string>
using namespace std;

void main()
{
bool flag;
map <string, int> flovers;
flovers["Iris"] = 0;
flovers["Rose"] = 0;
flovers["Astra"] = 0;
flovers["Pion"] = 0;
flovers["Georgin"] = 0;
flovers["Khrizantema"] = 0;
flovers["Gladoilus"] = 0;
for (int i = 0; i < 3; i++)
{
cout << i + 1 << " cottager grows:" <<  endl << "NO - 0" << endl << "YES - 1 " << endl << "********************" << endl;
for (map<string, int>::iterator it = flovers.begin(); it != flovers.end(); ++it)
{
cout << (*it).first << " = ";
try 
{
if (!(cin >> flag)) 
throw "ERROR!\nYou can not enter characters. Please, enter 0 or 1";
}
catch (char *str_exception)
{
cout << str_exception << endl;
exit(1);
}
if (flag)
(*it).second++;
}
}
cout << endl << "Grows all cottager: ";
for (map<string, int>::iterator it = flovers.begin(); it != flovers.end(); ++it)
{
if ((*it).second == 3)
cout << (*it).first << ", ";
}
cout << endl << "Grown at least two cottagers: ";
for (map<string, int>::iterator it = flovers.begin(); it != flovers.end(); ++it)
{
if (((*it).second == 2) || ((*it).second == 3))
cout << (*it).first << ", ";
}
cout << endl << "No one from the growing: ";
for (map<string, int>::iterator it = flovers.begin(); it != flovers.end(); ++it)
{
if ((*it).second == 0)
cout << (*it).first << ", ";
}
cout << endl;
}

Комментарии

Популярные сообщения из этого блога

Прата С. Решение задач 6 главы

На решение этих задач у меня ушло 2 дня. Становится все интереснее и интереснее! и черт возьми, я наконец-то поняла работу с файлами! прошу прощения за корявые условия. просто в нормальном формате электронной книги у меня нет, потому скрины задач просто пропущены через Файнридер.

Прата С. решение задач 5 главы

Эта глава по циклам меня удивила. я  с неким пренебрежением отнеслась к ней, т.к. думала что и так все знаю по этой теме. но Прата так глубоко и в подробностях объяснил тему, что я заново переосмыслила циклы и выражения. было очень много интересных подробностей, которые мне никто не мог толком объяснить. и кстати, парочка задач была над которыми я поломала голову. особенно понравился такой акцент на указателях. как говорится, приучают с малых лет. понять - поняла, но путаюсь в них до сих пор нечеловечески.

Прата С. Решение 3 и 4 главы

Повторюсь, взяла только интересные мне задания, т.е. с элементами того что поняла плохо/не встречала ранее. Сделала за сегодня. с удовольствием отмечаю что сдвиги  в положительную сторону  хотя-бы в стиле есть . в 4 главе ясно объяснено почему при вводе нескольких строк начинаются проблемы, и как этого избежать, подробно описана работа с входным потоком. Как работать со строками стиля Си и класса String, разница. для себя я сделала выводы что лучше всего, конечно-же класс string. намного меньше мороки. и метод ввода getline в обоих случаях. в задачах разница проиллюстрирована. и кстати, указатели больше не вызывают у меня ужаса и трепета. много нового узнала о видах структур. эта глава расставила все по местам в моей голове. правда, зачем в задачи на СР втиснута работа с массивом array - загадка. он ведь толком не объяснен, но понять его интуитивно можно, правда, зачем его использовать не зная тонкостей, как обычный массив с немного иным объявле...