Часть №9: Практические задания по С++

  Юрий  | 

  Обновл. 16 Сен 2021  | 

 25839

 ǀ   38 

Здесь размещены задания по С++, которые вы можете выполнить. Каждое задание имеет свой уровень сложности. Готовых ответов не будет, поэтому welcome в комментарии!

Easy: Задание №1

Напишите программу, которая проверяет, является ли год високосным (кратным 4) в пределах от 2000 года до н.э. и до 2000 года нашей эры.

Пример результата выполнения программы:

Введите год и эру: 656 год нашей эры
Этот год является високосным

Medium: Задание №2


Напишите программу, которая проверяет, находится ли введенное с клавиатуры число в массиве. Массив предварительно вводит пользователь в начале выполнения программы.

Hard: Задание №3

Сыграйте с компьютером в игру, используя следующие 5 вариантов наборов чисел:

   Набор №1: 6, 7, 8

   Набор №2: 7, 8, 9

   Набор №3: 6, 9, 10

   Набор №4: 6, 9, 8

   Набор №5: 7, 6, 10

Введите с клавиатуры свой вариант набора чисел (из вышеприведенных) и сравните с набором чисел компьютера, который выбирается рандомно из 5 вышеприведенных наборов. Если сумма цифр вашего набора чисел больше суммы цифр набора чисел компьютера, то вы выиграли (и наоборот). В случае одинаковых сумм цифр — ничья.


Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (24 оценок, среднее: 4,67 из 5)
Загрузка...

Комментариев: 38

  1. Finchi:

    В задаче №1 не правильное определение високосного года.
    Високосный год — который кратный 400, или не кратный 100, но кратный 4. То есть 1800 год не високосный.
    Правильное условие для определения високосного года:

  2. Антон:

    Задание №1

  3. KyberMan:

    Исправил не большие ошибки
    Задание №3

  4. Mixa:

    3 Задача

  5. WAR:

    Задание №3:

  6. WAR:

    Задание №2:

  7. WAR:

    Задание №1:

  8. Максим:

    Задание №3

  9. Rock:

    Задание 1:

    Задание 2:

    Задание 3: странная игра но какое уж тз….

    1. Александр:

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

  10. Владимир:

  11. Анастасия:

    Моё решение задания №3:

  12. Анастасия:

    Моё решение задания №2:

  13. Анастасия:

    Моё решение задания №1:

    Мне кажется, из-за разделения числа и строки уровень задания выше, чем Easy. Позже посмотрю, как решили другие. Неужели можно было проще?

    1. Анастасия:

      А, ну да, для определения високосности года совсем не обязательно было разбирать, какую там эру написал пользователь и написал ли он вообще про эру.

  14. Алена:

    Задача 2.

    1. Анастасия:

      Алёна, у Вас тут упущена проверка пользовательского ввода массива чисел. Так тоже можно, но без этой проверки задача сильно легче.

    2. Анастасия:

      А, похоже проверка ввода массива тоже есть. Я сначала не поняла, но потом дошло. Для меня только осталось непонятным, как peek() может считывать числа double, ведь, насколько мне известно, он считывает только один символ из потока.

  15. Алена:

    Задача 1.

  16. Shom:

    Задание №3

    1. Анастасия:

      Почему Вы решили ограничивать ввод чисел 2000? Ограничивать числа от пользователя — это, конечно, нормально, но странно, почему именно 2000. Все заданные наборы содержат числа не больше 10. Это раз.
      А два, раз уж Вы спрашиваете пользователя: "Хотите сыграть ещё раз? (д/н)" то было бы логично продолжать только в случае "д", а не во всех других случаях кроме "н".
      И ещё мне кажется лишним выводить "Вы ввели: " сразу после ввода чисел.
      Это не критика, просто решила поделиться тем, за что глаз зацепился при чтении Вашего кода.

      1. Shom:

        Ограничение в 2000 осталось с первой задачи, упустил этот момент.
        Насчёт [Да/Нет] — особо над этим не задумывался, но раз есть разница, значит в следующий раз сделаю по вашему рецепту. Ну а "Вы ввели …" — примерно так раньше в телешоу говорили ("Вы выбрали", "Вы назвали"), решил эту традицию не нарушать)

    2. Shom:

      Поправка.
      Строку №11 следует заменить на
      if (std::cin.fail() || val<0 || val>10 )

  17. Владимир:

    Задание №2

  18. Владимир:

    Задание №1

  19. Shom:

    Задание №2.

    1. Владимир:

      Shom, надо немного допилить программку, а то вот что она выдает:

      Введите числа в массив через пробел: -2
      Введите число для проверки или нажмите 'Esc' для выхода: 2
      Данное число присутствует в массиве.
      Введите число для проверки или нажмите 'Esc' для выхода: 2.3456
      Данное число присутствует в массиве.
      Введите число для проверки или нажмите 'Esc' для выхода: -2
      Данного числа нет в массиве.

      1. Shom:

        Владимир, спасибо, поправил.
        Только с дробным числом у меня нормально работало.

        Задание №2. Корректировка №1.

  20. Shom:

    Задание №1.

  21. Vlad:

    Задание 2
    Даже если номер находится в массиве, выдаёт обратное. Помогите.

    1. Shom:

      if (check == randul[i] ) { … } — проверяется равенство номера с элементом следующим за последним элементом массива. Как мне кажется, на равенство проверять нужно каждый элемент строки. Примерно так:

      1. Vlad:

        Спасибо, спустя пару недель уроков додумался сам. Проверку надо было делать во время цикла ввода значений

  22. Илья:

    Задание 3:

    1. Анастасия:

      В принципе, код довольно самодостаточный и даже красивый. Но Вы опять никак не проверяете пользовательский ввод.

  23. Максон-патиссон:

    Задание 3 (если все правильно понял)

    1. Анастасия:

      Похоже, из всех здесь отписавшихся, только Вы поняли эту задачу так, что пользователь должен выбрать один из заданных наборов. Но так, наверное, даже правильней. И интересней.
      Я не поняла, как работает this->kit_data[] в классе, где kit_data не описано. И зачем в этом классе нужна ещё одна переменная kit_data[3] я тоже не поняла.

  24. Илья:

    Задание 2:

  25. Илья:

    Задание 1:

Добавить комментарий для Анастасия Отменить ответ

Ваш E-mail не будет опубликован. Обязательные поля помечены *