Вопрос задан 19.03.2025 в 09:12. Предмет Информатика. Спрашивает Головащенко Арина.

Написать программу, которая показывает пользователю на экран три страны и предлагает выбрать одну. После того, как пользователь выберет страну, программа показывает три города (для какой-то страны может показать правильно, для какой-то - нет) и спрашивает пользователя, относятся ли эти города к выбранной им стране. После ответа пользователя, программа сообщает ему, правильно он ответил, или нет
на С++

Перейти к ответам

Ответы на вопрос

Отвечает Смирнов Евгений.

Вот пример программы на C++, которая выполняет описанную задачу:

cpp
#include #include #include #include #include

// Функция для отображения списка и выбора пользователем int выбратьОпцию(const std::vector& опции) { for (size_t i = 0; i < опции.size(); ++i) { std::cout << i + 1 << ". " << опции[i] << std::endl; }

int выбор; do { std::cout << "Введите номер вашего выбора: "; std::cin >> выбор; } while (выбор < 1 || выбор > static_cast<int>(опции.size()));

return выбор - 1; // Возвращает индекс выбранной опции }

int main() { // Инициализация случайного генератора std::srand(std::time(0));

// Список стран std::vector страны = {"Россия", "Франция", "Япония"};

// Соответствие стран и городов (правильные города) std::vector> правильныеГорода = { {"Москва", "Санкт-Петербург", "Новосибирск"}, // Для России {"Париж", "Лион", "Марсель"}, // Для Франции {"Токио", "Осака", "Киото"} // Для Японии };

// Набор неправильных городов std::vector неправильныеГорода = { "Лондон", "Берлин", "Мадрид", "Сидней", "Рим" };

// Показываем страны std::cout << "Выберите страну из списка:" << std::endl; int выборСтраны = выбратьОпцию(страны);

// Генерируем список городов для выбранной страны (часть правильных, часть случайных) std::vector города = правильныеГорода[выборСтраны]; while (города.size() < 3) { std::string случайныйГород = неправильныеГорода[std::rand() % неправильныеГорода.size()]; if (std::find(города.begin(), города.end(), случайныйГород) == города.end()) { города.push_back(случайныйГород); } }

// Перемешиваем города std::random_shuffle(города.begin(), города.end());

// Показываем города std::cout << "Вы выбрали страну: " << страны[выборСтраны] << std::endl; std::cout << "Относятся ли следующие города к выбранной стране? (да/нет)" << std::endl; for (const auto& город : города) { std::cout << город << ": "; std::string ответ; std::cin >> ответ;

// Проверяем правильность ответа bool правильныйОтвет = (std::find(правильныеГорода[выборСтраны].begin(), правильныеГорода[выборСтраны].end(), город) != правильныеГорода[выборСтраны].end()); if ((ответ == "да" && правильныйОтвет) || (ответ == "нет" && !правильныйОтвет)) { std::cout << "Верно!" << std::endl; } else { std::cout << "Неверно!" << std::endl; } }

return 0; }

Объяснение кода:

  1. Список стран и городов:

    • Вектор страны содержит доступные страны.
    • Вектор правильныеГорода связывает страны с их городами.
    • неправильныеГорода содержит случайные города, которые используются для "обмана".
  2. Выбор страны:

    • Пользователь видит список стран, выбирает одну, и программа запоминает этот выбор.
  3. Генерация списка городов:

    • Программа создает список из трех городов: часть из них правильные, часть случайные.
    • Список перемешивается для запутывания.
  4. Проверка ответа:

    • Пользователь отвечает "да" или "нет" для каждого города.
    • Программа сверяет ответ с правильным списком городов и сообщает, правильный ли был ответ.
  5. Вывод результата:

    • На каждый город программа сразу сообщает, правильно ли пользователь ответил.

Этот код легко расширяется и позволяет добавлять больше стран, городов или усложнять логику.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос