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

Интересная задачка для развития. Решено через 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 дня. Становится все интереснее и интереснее! и черт возьми, я наконец-то поняла работу с файлами! прошу прощения за корявые условия. просто в нормальном формате электронной книги у меня нет, потому скрины задач просто пропущены через Файнридер.

6 глава, Лафоре Р

*1. Создайте класс Int, имитирующий стандартный тип int. Единственное поле этого класса должно иметь тип int. Создайте методы, которые будут устанавливать значение поля, равным нулю, инициализировать его целым значением, выводить значение поля на экран и складывать два значения типа Int. Напишите программу, в которой будут созданы три объекта класса Int, два из которых будут инициализированы. Сложите два инициализирован- ных объекта, присвойте результат третьему, а затем отобразите результат на экране.

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

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