Здесь размещены задания по С++, которые вы можете выполнить. Каждое задание имеет свой уровень сложности. Готовых ответов не будет, поэтому welcome в комментарии!
Easy: Задание №1
Каждая бактерия делится на две в течение одной минуты. В начальный момент имеется одна бактерия. Напишите программу, которая вычисляет общее количество бактерий после истечения указанного пользователем промежутка времени (например, после 5 или после 17 минут).
Medium: Задание №2
Напишите функцию int f(int h, int m, int s)
, которая принимает три целых аргумента (часы h
, минуты m
и секунды s
) и возвращает количество секунд, прошедших с начала дня.
Hard: Задание №3
Напишите программу, которая считывает из файла целые числа, которые рандомно генерируются в диапазоне от 1 до 72. Для каждого считанного числа ваша программа должна вывести строку, содержащую соответствующее количество звёздочек. Например, если ваша программа считала из файла число 7
, то она должна вывести 7 звёздочек: *******
.
Пример результата выполнения программы:
Числа из файла: 3 17 48 52 46 58 59 64 57
Результат:
Число №1 = 3 ***
Число №2 = 17 *****************
Число №3 = 48 ************************************************
Число №4 = 52 ****************************************************
Число №5 = 46 **********************************************
Число №6 = 58 **********************************************************
Число №7 = 59 ***********************************************************
Число №8 = 64 ****************************************************************
Число №9 = 57 *********************************************************
Задание №3:
Задание №1 с использованием библиотеки длинной арифметики GMP
Для того чтобы код работал, нужно установить и пролинковать библиотеку.
Задание 2
Задание №2 Не знаю, правильно ли я понял условие задание. Но мое решение следующее
Задание №2:
Задание №1:
Задание 1:
Задание 2:
Задание 3:
Задание №3:
Моё решение задания №3:
Моё решение задания №2:
Зачем захватывать часы, минуты и секунды элементарного типа ссылкой? Скопировать их по значению проще чем скопировать их адрес.
Зачем выделять память под лишние статические переменные которые потом будут висеть в памяти на все время работы программы?
Мы же не будем потом изменять количество секунд в 1 минуте.
Будет менее затратно:
Моё решение задания №1:
Задание №3
https://pastebin.com/9A07e3Cr
Задание №1:
double long для количества бактерий — это что-то новенькое. И поэтому Вы потом делаете костыль, чтобы убрать кучу нулей после запятой. Но Ваша идея разделять разряды мне понравилась. Я думала, что есть какой-нибудь флаг или ещё что-то для этого, но не нашла.
Задание №2.
Shom, можно было сразу считывать из файла в size_t num, без преобразования строки в число
Не знал о такой возможности. Спасибо.
Это не второе, а третье задание
Верно. Второе не опубликовалось у меня тогда.
Задание №1.
А почему long double для количества бактерий? Они же не могут быть дробными…
Действительно. Видимо, слово "делится" так подействовало.
Задача 2.
Было бы лучше прописать 60 и 3600 как константы.
И, судя по коду, Вы допускаете, например 60 секунд или 24 часа.
Глобальные константы — зло, ну да ладно. А SHRT_MAX где определяется? И, мне кажется, массив тут лишний.
Задача 1.
№3
Юлия, вместо: if (f.is_open ()) стр.36 должно быть: if (!fin.is_open()), иначе не будет проверки
Хотя я и разобралась в этом коде, ему бы очень не помешали комментарии или хотя бы более "говорящие" названия переменных, понятные не только Вам одной.
№1
Юлия, не многовато ли кода для такой задачки? По существу:
опять перестраховались с кириллицей (много лишнего, чтобы её подключить),
неговорящее значение для промежутка времени n.
Задание 3:
Илья, у Вас в цикле for при каждой итерации создается новое условие для продолжения цикла. Возможно так и было задумано. Диапазон чисел файла не соответствует условию
Больше всего смущает функция с генерацией случайных чисел в файл:
Как эти магические числа 25, 50, 75 соотносятся с условием задачи, что число должно быть от 1 до 72?
При этом ни единого комментария!..
Задание 2:
Задание 1:
этот код уже получше, чем Ваши коды до этого, однако по прежнему Вы мало уделяете работе с пользователем. Не поясняете, на деление чего нужно ввести время. Не комментируете результат.
3-я Задача:
Игорь, а где у Вас запись в файл рандомных чисел, что-то я не обнаружил, на консоль будет выводиться, вероятно, мусор переменной х
Видимо, предполагается, что файл уже создан и в нём нужные числа. Вы правы, это недоработка. Выполнена лишь часть задания.
Задание №3
https://pastebin.com/SYXByDNL
Три раза проверять файл на открытие, два раза считывать с него одни и те же числа, для этого закрывать и открывать вновь… Ну, не знаю, не знаю….
2-я задача:
Пётр,
если h, m, s передаются в функцию в качестве параметров, зачем просить пользователя их вводить? Это нелогично. К тому же, Вы не указываете пользователю, в каком именно формате нужно вводить данные.
Результат работы программы:
Введите время (часы, минуты, секунды): 16:53:30
Прошло 57600 секунд
(посчитались только 16 часов)
Второй запуск, я как прилежный пользователь ввела данные через запятую:
Введите время (часы, минуты, секунды): 01, 10, 15
Прошло 3600 секунд
(посчитался только 1 час)