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

  Юрий  | 

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

 13888

 ǀ   42 

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

Easy: Задание №1

Напишите программу, которая вычисляет дату следующего дня.

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

Введите цифрами дату (число месяц год): 31 12 2018
Последний день месяца! Завтра 01.01.2019

Medium: Задание №2


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

Hard: Задание №3

В игру «100 спичек» вы играете с компьютером. Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по несколько спичек: не менее одной и не более десяти. Проигрывает тот, кто взял последнюю спичку. Количество спичек, которое берет компьютер, определите с помощью генерации случайных чисел.


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

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

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

  1. WAR:

    Задание №3:

  2. WAR:

    Задание №1:

  3. WAR:

    Задание №2 (исправил ошибку с выводом введенного номера):

  4. Rock:

    Задание 1:

    Задание 2:

    Задание 3:

    Поведение бота не рандомно я прописал ему некий интеллект

  5. Максим:

    Задание 3

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

    Моё решение задания №3, добавила как опцию высокий уровень сложности, когда компьютер просчитывает свой ход:

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

    Моё решение задания №2 (два способа):

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

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

  9. Shom:

    Задание №3.

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

      Это хорошо, что у Вас хотя бы последний ход компьютер делает более менее "обдуманно". Плохо, что игрок всегда ходит первым, и неговорящие имена параметров функции validationInput(const int a, const int z), которые на самом деле минимальное и максимальное количество спичек за ход. За то "спички" поставили в правильную форму))

  10. Shom:

    Задание №2.

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

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

      1. Shom:

        https://math.semestr.ru/inf/16.php
        Да, красивая функция и очень простая)

  11. Shom:

    Задание №1.

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

      Честно говоря, ожидала от Вас более красивого решения. Весь этот караван условий и проверок в main смотрится не очень профессионально, а ведь Вы способны на очень гармоничные и хорошо структурированные коды…
      И проверка на вИсокосный год явно не полная, раньше была задача как раз на него, оттуда бы и взяли.

      1. Shom:

        "Караван условий"))) Действительно, очень подходящее определение).
        Почитал про високосный год — оказывается не всё там так просто, как я считал.

  12. Владимир:

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

      Владимир,

      1) как месяц может быть одновременно меньше 1 и больше 12?

      Причём здесь именно такой год тоже не ясно.

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

      3) слишком много if и else наводят на мысль, что здесь лучше использовать switch, к тому же тогда программа, проверив одно условие, не будет проверять все остальные, как это происходит у Вас.

      4) но идея с нулями:

      очень удачная. Правда, здесь это Алёна первая воплотила.

  13. Kris:

    Мне кажется, было бы интересно еще добавить 4 задание, как развитие 3-го. Тип, научить компьютер не просто глупо ходить по рандому, а ходить "умно". Если компьютер ходит 2-м, то он всегда выигрывает при правильной игре, если будет ходить так: 11 — x, где x — ход пользователя. Если же будет ходить первым, и пользователь не будет ходить "умно", то можно придумать алгоритм попытки выйти на выигрышную стратегию, но тут уже риск, что пользователь догонит до выигрышной стратегии. Чтобы этого не было, можно развить игру и играть не со 100 спичками, а с рандомным количеством и рандомным количеством возможностей брать спички. В таком случае, пользователю будет тяжело додуматься до выигрышной стратегии, и комп. будет побеждать 😉

  14. Алена:

    Задача 2.

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

      У меня получилось похожее на Ваше решение. Я только не поняла значение 1/16 в самом конце.

  15. Алена:

    Задача 1.

    1. Владимир:

      Алена, если вместо числа пользователь введет число с буквой, например 5е, то программа будет работать неправильно

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

      Мне не понравилось несоответствие названия и комментария к функции:

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

  16. Денис:

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

      Я код не запускала, но по тому, что вижу:
      1) Игрок всегда ходит первым… Это не совсем честно.
      2) Если игрок сходил и спичек после его хода не осталось, то выполняется break без присуждения победы, а это уже дискриминация компьютера!
      3) Минимальное и максимальное количество спичек за ход встречается в виде литералов в отдельно взятых функциях хода игрока и хода компьютера (здесь в виде параметров). Если правила игры изменятся, придётся менять числа во всех этих местах, то есть эти числа тоже лучше сделать константами в одном месте.

  17. Денис:

    Задание #3:

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

      по-моему эту дубль решения 3-го задания от Дениса. Модератору: одно из решений стоит удалить.

  18. Владимир:

    Задание №3