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

  Юрий  | 

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

 30748

 ǀ   46 

Здесь размещены задания по С++, которые вы можете выполнить. Каждое задание имеет свой уровень сложности. Готовых ответов не будет, поэтому 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 *********************************************************


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

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

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

  1. Finchi:

    Задание №3:

  2. Finchi:

    Задание №1 с использованием библиотеки длинной арифметики GMP
    Для того чтобы код работал, нужно установить и пролинковать библиотеку.

  3. Руслан:

    Задание 2

  4. Антон:

    Задание №2 Не знаю, правильно ли я понял условие задание. Но мое решение следующее

  5. WAR:

    Задание №2:

  6. WAR:

    Задание №1:

  7. Rock:

    Задание 1:

    Задание 2:

    Задание 3:

  8. RockNRullz:

    Задание №3:

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

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

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

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

    1. Максим:

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

      Мы же не будем потом изменять количество секунд в 1 минуте.
      Будет менее затратно:

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

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

  12. Владимир:

    Задание №1:

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

      double long для количества бактерий — это что-то новенькое. И поэтому Вы потом делаете костыль, чтобы убрать кучу нулей после запятой. Но Ваша идея разделять разряды мне понравилась. Я думала, что есть какой-нибудь флаг или ещё что-то для этого, но не нашла.

  13. Shom:

    Задание №2.

    1. Владимир:

      Shom, можно было сразу считывать из файла в size_t num, без преобразования строки в число

      1. Shom:

        Не знал о такой возможности. Спасибо.

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

      Это не второе, а третье задание

      1. Shom:

        Верно. Второе не опубликовалось у меня тогда.

  14. Shom:

    Задание №1.

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

      А почему long double для количества бактерий? Они же не могут быть дробными…

      1. Shom:

        Действительно. Видимо, слово "делится" так подействовало.

  15. Алена:

    Задача 2.

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

      Было бы лучше прописать 60 и 3600 как константы.
      И, судя по коду, Вы допускаете, например 60 секунд или 24 часа.

  16. Владимир:

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

      Глобальные константы — зло, ну да ладно. А SHRT_MAX где определяется? И, мне кажется, массив тут лишний.

  17. Алена:

    Задача 1.

  18. Юлия:

    №3

    1. Владимир:

      Юлия, вместо: if (f.is_open ()) стр.36 должно быть: if (!fin.is_open()), иначе не будет проверки

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

      Хотя я и разобралась в этом коде, ему бы очень не помешали комментарии или хотя бы более "говорящие" названия переменных, понятные не только Вам одной.

  19. Юлия:

    №1

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

      Юлия, не многовато ли кода для такой задачки? По существу:
      опять перестраховались с кириллицей (много лишнего, чтобы её подключить),
      неговорящее значение для промежутка времени n.

  20. Илья:

    Задание 3:

    1. Владимир:

      Илья, у Вас в цикле for при каждой итерации создается новое условие для продолжения цикла. Возможно так и было задумано. Диапазон чисел файла не соответствует условию

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

      Больше всего смущает функция с генерацией случайных чисел в файл:

      Как эти магические числа 25, 50, 75 соотносятся с условием задачи, что число должно быть от 1 до 72?
      При этом ни единого комментария!..

  21. Илья:

    Задание 2:

  22. Илья:

    Задание 1:

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

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

  23. Игорь:

    3-я Задача:

    1. Владимир:

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

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

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

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

      Три раза проверять файл на открытие, два раза считывать с него одни и те же числа, для этого закрывать и открывать вновь… Ну, не знаю, не знаю….

  24. Пётр:

    2-я задача:

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

      Пётр,
      если h, m, s передаются в функцию в качестве параметров, зачем просить пользователя их вводить? Это нелогично. К тому же, Вы не указываете пользователю, в каком именно формате нужно вводить данные.
      Результат работы программы:
      Введите время (часы, минуты, секунды): 16:53:30
      Прошло 57600 секунд
      (посчитались только 16 часов)
      Второй запуск, я как прилежный пользователь ввела данные через запятую:
      Введите время (часы, минуты, секунды): 01, 10, 15
      Прошло 3600 секунд
      (посчитался только 1 час)

Добавить комментарий для Finchi Отменить ответ

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