Россия и Беларусь начали и продолжают войну против народа Украины. #Буча #Мариуполь #Краматорск #Кременчуг

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

  Юрий  | 

  Обновл. 12 Ноя 2021  | 

 53203

 ǀ   79 

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

Easy: Задание №1

Напишите программу вычисления стоимости поездки на автомобиле на дачу (туда и обратно). Исходными данными являются:

   расстояние до дачи (в км);

   литраж бензина, который потребляет автомобиль на 100 км пробега;

   цена одного литра бензина.

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

Расстояние до дачи (км): 67
Расход бензина (литров на 100 км пробега): 8.5
Цена литра бензина (руб.): 50
Поездка на дачу и обратно обойдется в 284.75 руб.

Medium: Задание №2


Напишите программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется, если сумма покупки больше 500 руб., в 5% — если сумма покупки больше 1000 руб.

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

Введите сумму покупки: 640
Вам предоставляется скидка в 3%
Сумма с учетом скидки: 620.80 руб.

Hard: Задание №3

Напишите программу, реализующую игру «Угадай число». Компьютер загадывает число от 0 до 999 (используйте генерацию случайных чисел), а пользователь угадывает его. На каждом шаге угадывающий делает предположение, а задумавший число — сообщает, сколько цифр из числа угаданы и сколько из угаданных цифр занимают правильные позиции в числе. Например, если задумано число 725 и выдвинуто предположение, что задумано число 523, то угаданы две цифры (5 и 2), и одна из них занимает верную позицию. Например:

Компьютер загадал трехзначное число. Вы должны его отгадать. После очередного числа вам будет сообщено, сколько цифр угадано и сколько из них находится на своих местах.
Ваш вариант: 123
Угадано: 0. На своих местах: 0
Ваш вариант: 456
Угадано: 1. На своих местах: 0
Ваш вариант: 654
Угадано: 2. На своих местах: 2
Ваш вариант: 657
Угадано:  2. На своих местах: 2
Ваш вариант: 658
Угадано: 3. На своих местах: 3
***Вы угадали число 658!***


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

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

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

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

    Задание №3

    Пока отлаживал логику — "Награвся як ота дитина!"

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

      Несколько исправлений:

      1. При компиляции под Linux, в 16 строке, где (RAND_MAX + 1) нужно исправить на (RAND_MAX + 1.0), иначе алгоритм генерирует отрицательное число и нарушается логика.

      2. Для очистки консоли в Linux, в 50 строке вместо system("cls")использовал последовательно 2 строки system("clear"), почему-то одной строкой очистка получалась неполноценной.

      3. Циклы в строках 32 – 40 можно переписать так:

      4. Строку 2 можно удалить

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

        Нашел еще одну неполноценность.

        При вводе игроком «ноля», не выдается сообщение о количестве угаданных цифр и количестве цифр на своих местах.
        Причина – не совсем удачный выбор критерия проверки вывода указанного сообщения в строке 62, при старте игры или перезапуске после нажатия «Y».

        Фиксим «баг»:
        Изменяем строку 47:

        В строке 62 вместо if (human_num) прописываем

        в конце строки 63 после std::endl; (или на следующей строке) прописываем

        В принципе exit_char можно присвоить любое значение отличное от 'Y' или 'y'

  2. SirAyane:

    Задание N3.

    За гранью понимания осталось как расценивать повторяющиеся цифры. К примеру загадано 311, пользователь вводит 333. Угадано 3 цифры или 1? Построил алгоритм по уникальности каждой цифры. 333 ответит что угадана одна цифра. 119 — угадано две цифры (1) одна на месте.
    Английский — от фонаря.

  3. Tychka17:

    Задание номер 3.
    Решил завести структурку для максимального удобства, но программа получилась не маленькой, как вы это оцените?

  4. Vlanc:

    задача 3

    1. Alexjazz:

      У вас не работает генерация случайных чисел — вернее всегда будет одно и то же число 🙂 srand(time(NULL)); и подключить заголовочный файл ctime
      Погуглите, как генерируются случайные числа.
      Ну и дальше — если вместо "случайного" числа 478, присвоить int secret = 222, то при введении варианта 223 мы получим 6 совпадений и — 2 корректные позиции что как бы не совсем по условию задачи.

  5. Alexjazz:

    задание №3

  6. Нина:

    Задача 1 (простенькое решение)

  7. Дмитрий:

    Задача 1

  8. WAR:

    Задание №3:

  9. WAR:

    Задание №2:

  10. WAR:

    Задание №1:

  11. Николай:

    Третья задача.

  12. Дмитрий:

    3-е Задание

  13. Алексей:

    Задание 3

  14. Rock:

    1 задание:

    2 задание:

    3 задание: ух и поело мне мозг оно

  15. Radik:

    // 3е задание

    1. Павел:

      Хорошее решение, можно ещё через две unordered_map, в которых ключ — цифра, а значение — количество таковых в загаданном и предполагаемом числах, необходимость использования std::unique и std::string::resize отпадёт, можно будет сразу итерироваться по мапе с предполагаемым числом и смотреть, сколько first-цифр этой мапы есть в second-счётчике мапы с загаданным числом. Но тут идёт нагрузка на память, а в Вашем — на скорость, и потому оба решения по-своему хороши.

      1. Saymonkaje:

        Програма не совсем работает
        Пусть ПК получил 221, если я отвечу 225, то будет:
        Угадано: 1. Соответствует своим разрядам: 2
        Что не соответствует действительности

  16. Slavik:

    Задание №1

    Задание №2

  17. Artem:

    №3:

  18. Юра:

    Задание №3:

    1. Дмитрий:

      На мой взгляд — лучшее решение. По компактности и оптимальности.

  19. Екатерина:

    Задание №2

  20. Игорь:

    Задание 3