MyTetra Share
Делитесь знаниями!
Каталог столиц
Время создания: 27.07.2017 16:33
Раздел: Computer - Programming - C++ - Coursera White_Belt

/*

Реализуйте справочник столиц стран.


На вход программе поступают следующие запросы:

CHANGE_CAPITAL country new_capital — изменение столицы страны

country на new_capital, либо добавление такой страны

с такой столицей, если раньше её не было.

RENAME old_country_name new_country_name — переименование

страны из old_country_name в new_country_name.

ABOUT country — вывод столицы страны country.

DUMP — вывод столиц всех стран.


Формат ввода

В первой строке содержится количество запросов Q,

в следующих Q строках — описания запросов.

Все названия стран и столиц состоят лишь из латинских букв,

цифр и символов подчёркивания.


Формат вывода

Выведите результат обработки каждого запроса:


В ответ на запрос CHANGE_CAPITAL country new_capital выведите

Introduce new country "country" with capital "new_capital",

если страны country раньше не существовало;

Country "country" hasn't changed its capital,

если страна country до текущего момента имела столицу new_capital;

Country "country" has changed its capital from "old_capital" to "new_capital",

если страна country до текущего момента имела столицу old_capital,

название которой не совпадает с названием new_capital.


В ответ на запрос RENAME old_country_name new_country_name выведите

Incorrect rename, skip,

если новое название страны совпадает со старым,

страна old_country_name не существует или

страна new_country_name уже существует;

Country "old_country_name" with capital "capital" has been renamed to "new_country_name",

если запрос корректен и страна имеет столицу capital.


В ответ на запрос ABOUT country выведите

Country "country" doesn't exist,

если страны с названием country не существует;

Country "country" has capital "capital",

если страна country существует и имеет столицу capital.


В ответ на запрос DUMP выведите

There are no countries in the world,

если пока не было добавлено ни одной страны;

разделённые пробелами пары country/capital,

описывающие столицы всех стран и упорядоченные по

названию страны, если в мире уже есть хотя бы одна страна.

*/


#include <iostream>

#include <string>

#include <map>


using namespace std;


int main()

{

int q;

map<string, string> catalog;

string command;


cin >> q;

while(q)

{

cin >> command;

if(command == "DUMP")

{

if(catalog.size())

{

for(const auto& s : catalog)

cout << s.first << "/" << s.second << " ";

}

else cout << "There are no countries in the world";

cout << "\n";

}

else

{

string country;

cin >> country;

auto iter_country = catalog.find(country);

auto end_of_catalog = catalog.end();

if(command == "ABOUT")

{

if(iter_country != end_of_catalog)

{

cout << "Country " << country << " has capital " << iter_country -> second;

}

else cout << "Country " << country << " doesn't exist";

cout << "\n";

}

else

{

string capital;

cin >> capital;

if(command == "RENAME")

{

auto iter_new_country = catalog.find(capital);

if( capital == country ||

iter_country == end_of_catalog ||

iter_new_country != end_of_catalog )

cout << "Incorrect rename, skip\n";

else

{

cout << "Country " << country << " with capital " << catalog[country] <<

" has been renamed to " << capital << "\n";

catalog[capital] = catalog[country];

catalog.erase(country);

}

}

else if(command == "CHANGE_CAPITAL")

{

if(catalog[country] == capital)

cout << "Country " << country << " hasn't changed its capital\n";

else

{

if(iter_country == end_of_catalog)

cout << "Introduce new country " << country << " with capital " << capital << "\n";

else if(catalog[country] != capital)

cout << "Country " << country << " has changed its capital from " <<

catalog[country] << " to " << capital <<"\n";

catalog[country] = capital;

}

}

}

}

--q;

}

system("pause");

return 0;

}

Так же в этом разделе:
 
MyTetra Share v.0.53
Яндекс индекс цитирования