Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (12)

Лучшие ответы пользователя

Все ответы (24)
  • Почему в Visual Studio этот код работает, а в Code::Blocks нет?

    Включаю режим экстрасенса. Потому что std::to_string появился в C++11, а у вас в Code::Blocks используется gcc без -std=c++11. Но лучше напишите, какие у вас сообщения об ошибках.
    Ответ написан
    Комментировать
  • Какие книги по С++17 посоветуете?

    Крайне рекомендую "Мейерс С. - Эффективный и современный C++. 42 рекомендации по использованию C++11 и C++14". Не по 17-му стандрарту, но умные указатели и не в нём появились.
    Ответ написан
    Комментировать
  • С чем связана потеря сигнала на мониторе?

    Бредовый вариант: на системнике накапливается статика. Когда вы нажимаете тумблер, вы задеваете рукой системник и снимаете её.
    Ответ написан
    Комментировать
  • Как выйти из нескольких вложенных циклов?

    iamevg, это не ответ на вопрос насчёт именно "как выйти из десятка вложенных циклов", это просто другое решение вашей задачи, в котором этого не требуется. Делений больше, сравнений меньше:
    std::vector<std::vector<int>> matrix = {{1,2,3,42},{5,6,7,8},{9,10,11,42}};
        const size_t limit = matrix.size() * matrix.front().size();
        const size_t cols = matrix.front().size();
        size_t i = 0;
        size_t j = 1;
        while(i < limit - 1 && matrix[i / cols][i % cols] != matrix[j / cols][j % cols])
        {
            if(++j == limit) j = ++i + 1;
        }
        if(i < limit - 1)
        {
            std::cout << "Indices of elements: [" << i / cols << "," << i % cols << "]";
            std::cout << "[" << j / cols << "," << j % cols << "]" << std::endl;
        }
        else std::cout << "Not found" << std::endl;
    Ответ написан
    5 комментариев
  • Как будет выглядеть защита от изменения вектора нулевой длины?

    Remove крайне странное название для "режима редактирования". Edit назовите, что ли :-)
    Думаю, проблема в этом: в Remove вы сначала читаете номер n строки для редактирования, но все данные продолжаете вбивать в SP[SP.size() - 1]
    У вектора есть полезные фишки: ссылка на последний элемент: SP.back(), проверка на пустоту: SP.empty()
    Код будет гораздо проще читать, если на элемент, с которым предполагается работа получить ссылку, и все действия делать уже с ней. Т.е. вместо SP[SP.size() - 1] ввести ссылку Sport& curSport = SP[SP.size() - 1]; и дальше работать с ней.
    Помимо проверки вводимых данных неплохо бы ещё сделать проверку выхода за границы массива. Вот тут, например:
    cout << "Введите номер строки, которую Вы хотите отредактировать: ";
      cin >> n;
      cout << "Введите фамилию участника: ";
      cin >> SP[n - 1].Name;
    Ответ написан
    Комментировать