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

  Юрий  | 

  Обновл. 28 Май 2021  | 

 8007

 ǀ   26 

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

Easy: Задание №1

Напишите программу, которая запрашивает у пользователя число, а затем выводит список всех делителей этого числа. Делитель — это число, на которое делится делимое. Например, 14 — это делитель 28, потому что 28 / 14 не имеет остатка.

Medium: Задание №2


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

Hard: Задание №3

Игра «Быки и коровы». Правила:

   программа генерирует случайным образом 4-значное число;

   пользователю предлагают угадать сгенерированное программой число;

   за каждую угаданную пользователем цифру, стоящую на правильной позиции, он получает «корову»;

   за каждую угаданную пользователем цифру, стоящую на неправильной позиции, он получает «быка»;

   после каждого предположения пользователю должно выводиться количество «коров» и «быков», которые он заработал;

   игра окончена тогда, когда пользователь угадал все цифры.

Например, компьютер загадал число 9978:

Добро пожаловать в игру «Быки и коровы»!
Введите число:
9965
2 коровы, 0 быков
9989
2 коровы, 1 бык
...


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

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

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

  1. Rock:

    Задание 1:

    Задание 2:

    Задание 3:

  2. Максим:

    Задание 3

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

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

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

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

  5. Shom:

    Задание №3.

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

      Мне понравилась идея сравнивать числа как строки и идея со строкой-стойлом. А по поводу коров покритикую — приходится делать две итерации по цифрам числа, что не очень хорошо. Сначала я тоже их считала в отдельном цикле, но в итоге сделала всё в одном.

      1. Shom:

        Всё в одном цикле? Даже не представляю как это )

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

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

  6. Shom:

    Задание №2.

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

      a и b — не самые удачные названия для переменных числе Фибоначчи, как и вообще для любых переменных…

      1. Shom:

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

  7. Shom:

    Задание №1.

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

      я не поняла, почему while (div <= num/2)? Само число всегда делится на само себя, а так мы до этого делителя никогда не дойдём…

      1. Shom:

        Действительно. Само число не посчитал делителем.

  8. Kris:

    Вычисление числа фиббоначи во время компиляции. Теперь вы видели все ;))

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

      Вычисление чисел Фибонначи рекурсивной функцией было в 107 уроке, так что все, кто дошёл до сюда, это уже видели. А Ваш код не соответствует условию задания, так как вычисляет только 10ое число, а по заданию нужно генерить количество чисел, которое указал пользователь.

      1. Kris:

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

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

          Ой, да ладно. То, что Вы запихнули это затёртое решение в шаблоны не сильно прибавило ему в оригинальности.

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

          Я, пожалуй, погорячилась. Вы правы, разница между вычислением в рантайме и при компиляции существенная. Но не уверена, что вычисление происходит именно при компиляции. Как бы это проверить?

      2. Kris:

        fib<10>(); — такой функции нету в коде. Значит, она должна быть сгенерирована. Очевидно, что она сгенерируется на шаблонах в момент компиляции, потому что в рантайме никакой генерации кода не происходит.
        А сама функция fib<n> в теле содержит лишь 1 инструкцию: return value, которое свернется оптимизатором в момент компиляции, тем самым, само значение будет вычисление до запуска программы, т.е. в компайл тайме.

  9. Владимир:

    Задание №3:

    1. Владимир:

      Забыл удалить стейтмент

      он вставлялся в код для тестирования

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

      Программа работает не корректно.
      Пример: загадано число 6068.
      Результат для числа 5678: 1 корова, 2 быка
      Результат для числа 6111: 1 корова, 1 бык

  10. Владимир:

    Задание №1:

  11. Алена:

    Задача 2.

  12. Алена:

    Задача 1.

Добавить комментарий

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