Практика в С++. Часть №22

  Юрий  | 

  Обновл. 12 Янв 2020  | 

 2306

 ǀ   24 

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

Easy: Задание №1

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

Medium: Задание №2


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

Hard: Задание №3

Напишите игру «Корова и быки». Правила:

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

  3. Аватар Shom:

    Задание №3.

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

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

      1. Аватар Shom:

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

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

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

  4. Аватар Shom:

    Задание №2.

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

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

      1. Аватар Shom:

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

  5. Аватар Shom:

    Задание №1.

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

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

      1. Аватар Shom:

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

  6. Аватар Kris:

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

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

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

      1. Аватар Kris:

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

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

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

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

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

      2. Аватар Kris:

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

  7. Аватар Владимир:

    Задание №3:

    1. Аватар Владимир:

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

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

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

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

  8. Аватар Владимир:

    Задание №1:

  9. Аватар Алена:

    Задача 2.

  10. Аватар Алена:

    Задача 1.

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

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