Здесь размещены задания по С++, которые вы можете выполнить. Каждое задание имеет свой уровень сложности. Готовых ответов не будет, поэтому welcome в комментарии!
Easy: Задание №1
Напишите программу вычисления стоимости поездки на автомобиле на дачу (туда и обратно). Исходными данными являются:
расстояние до дачи (в км);
литраж бензина, который потребляет автомобиль на 100 км пробега;
цена одного литра бензина.
Пример результата выполнения программы:
Расстояние до дачи (км): 67
Расход бензина (литров на 100 км пробега): 8.5
Цена литра бензина (у.е.): 50
Поездка на дачу и обратно обойдется в 569.5 у.е.
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!***
Задание №3
Задание №2.
2:
Задание №3
Пока отлаживал логику — "Награвся як ота дитина!"
Несколько исправлений:
1. При компиляции под Linux, в 16 строке, где (RAND_MAX + 1) нужно исправить на (RAND_MAX + 1.0), иначе алгоритм генерирует отрицательное число и нарушается логика.
2. Для очистки консоли в Linux, в 50 строке вместо system("cls")использовал последовательно 2 строки system("clear"), почему-то одной строкой очистка получалась неполноценной.
3. Циклы в строках 32 – 40 можно переписать так:
4. Строку 2 можно удалить
Нашел еще одну неполноценность.
При вводе игроком «ноля», не выдается сообщение о количестве угаданных цифр и количестве цифр на своих местах.
Причина – не совсем удачный выбор критерия проверки вывода указанного сообщения в строке 62, при старте игры или перезапуске после нажатия «Y».
Фиксим «баг»:
Изменяем строку 47:
В строке 62 вместо if (human_num) прописываем
в конце строки 63 после std::endl; (или на следующей строке) прописываем
В принципе exit_char можно присвоить любое значение отличное от 'Y' или 'y'
Задание N3.
За гранью понимания осталось как расценивать повторяющиеся цифры. К примеру загадано 311, пользователь вводит 333. Угадано 3 цифры или 1? Построил алгоритм по уникальности каждой цифры. 333 ответит что угадана одна цифра. 119 — угадано две цифры (1) одна на месте.
Английский — от фонаря.
Задание номер 3.
Решил завести структурку для максимального удобства, но программа получилась не маленькой, как вы это оцените?
задача 3
У вас не работает генерация случайных чисел — вернее всегда будет одно и то же число 🙂 srand(time(NULL)); и подключить заголовочный файл ctime
Погуглите, как генерируются случайные числа.
Ну и дальше — если вместо "случайного" числа 478, присвоить int secret = 222, то при введении варианта 223 мы получим 6 совпадений и — 2 корректные позиции что как бы не совсем по условию задачи.
задание №3
Задача 1 (простенькое решение)
Задача 1
Задание №3:
Задание №2:
Задание №1:
Третья задача.
3-е Задание
Задание 3
1 задание:
2 задание:
3 задание: ух и поело мне мозг оно
// 3е задание
Хорошее решение, можно ещё через две unordered_map, в которых ключ — цифра, а значение — количество таковых в загаданном и предполагаемом числах, необходимость использования std::unique и std::string::resize отпадёт, можно будет сразу итерироваться по мапе с предполагаемым числом и смотреть, сколько first-цифр этой мапы есть в second-счётчике мапы с загаданным числом. Но тут идёт нагрузка на память, а в Вашем — на скорость, и потому оба решения по-своему хороши.
Програма не совсем работает
Пусть ПК получил 221, если я отвечу 225, то будет:
Угадано: 1. Соответствует своим разрядам: 2
Что не соответствует действительности
Задание №1
Задание №2
№3:
Задание №3: