Главная страница
Навигация по странице:

  • Формат входного файла

  • Формат выходного файла Выходной файл должен содержать одно целое число — искомое количество дней.Пример входных и выходных данных

  • Практикум по програмированию. Абдураимов Ж. Отчет 2 по дисциплине Практикум по программированию Выполнили студенты группы 353090200002 Абдураимов Ж. Отаназаров А


    Скачать 45.28 Kb.
    НазваниеОтчет 2 по дисциплине Практикум по программированию Выполнили студенты группы 353090200002 Абдураимов Ж. Отаназаров А
    Анкор Практикум по програмированию
    Дата20.04.2021
    Размер45.28 Kb.
    Формат файлаdocx
    Имя файлаАбдураимов Ж.docx
    ТипОтчет
    #196548

    МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

    Санкт-Петербургский политехнический университет Петра Великого

    Институт компьютерных наук и технологий

    Отчет № 2

    по дисциплине «Практикум по программированию»

    Выполнили:

    студенты группы 3530902/00002 Абдураимов Ж.

    Отаназаров А.

    Хакимова Х.

    Проверил:

    ассистент ________________ Свистунова Александра Сергеевна

    Санкт-Петербург 2021

    Задание (вариант 4)

    Фермер Николай нанял двух лесорубов: Дмитрия и Федора, чтобы вырубить лес, на месте которого должно быть кукурузное поле. В лесу растут X деревьев.

    Дмитрий срубает по A деревьев в день, но каждый K-й день он отдыхает и не срубает ни одного дерева. Таким образом, Дмитрий отдыхает в K-й, 2K-й, 3K-й день, и т.д.

    Федор срубает по B деревьев в день, но каждый M-й день он отдыхает и не срубает ни одного дерева. Таким образом, Федор отдыхает в M-й, 2M-й, 3M-й день, и т.д.

    Лесорубы работают параллельно и, таким образом, в дни, когда никто из них не отдыхает, они срубают A + B деревьев, в дни, когда отдыхает только Федор — A деревьев, а в дни, когда отдыхает только Дмитрий — B деревьев. В дни, когда оба лесоруба отдыхают, ни одно дерево не срубается.

    Фермер Николай хочет понять, за сколько дней лесорубы срубят все деревья, и он сможет засеять кукурузное поле.

    Требуется написать программу, которая по заданным целым числам A, K, B, M и X определяет, за сколько дней все деревья в лесу будут вырублены.

    Формат входного файла

    Входной файл содержит пять целых чисел, разделенных пробелами: A, K, B, M и X (1 ≤ A, B ≤ 109 , 2 ≤ K, M ≤ 1018, 1 ≤ X ≤ 1018).

    Формат выходного файла

    Выходной файл должен содержать одно целое число — искомое количество дней.

    Пример входных и выходных данных

    Входные данные

    Выходные данные

    2 4 3 3 25

    7


    Решение проблемы

    Наша задача состоит в том, чтобы подсчитать минимальное количество дней, которое потребуется 2-ум рабочим для полной вырубки леса. Задается пользователем производительность рабочих и день, на который после непрерывной работы они отдыхают. Наша идея состоит в том, чтобы рабочие вырубали лес до тех пор, пока он не закончится.

    Очевидно, что: остаток леса = лес – вырубка. (DEV = DEV – AB)

    После каждого дня стоит считать дни работы, то есть если был проведен полный рабочий день или частичный (после которого не осталось леса), нужно прибавлять +1 к количеству дней работы. Это процедуру стоит выполнять до тех пор, пока количество деревьев не станет равно 0, либо вообще станет отрицательным.

    У наших рабочих есть выходные, и каждый К и М день они отдыхают => не работают, а значит вырубка леса в этот день не проводится ими, им следует пропустить этот день.

    i += 1, j += 1; - счетчик дней, какой день по счету работает каждый из работников, ведь работу они начинают в один день.

    if (i != K) dev -= A; - если не настал день отдыха, лесоруб выполняет свою работу и вырубает лес.

    else i = 0; если все-таки день отдыха настал, то вырубка леса не проводится и счетчик дней работы обнуляется.

    days += 1; - после каждого прошедшего дня мы прибавляем 1 день к общей работе рабочих.

    Текст программы
    #include

    using namespace std;
    int main()

    {

    system("color F1");

    setlocale(LC_ALL, "rus");

    int A, B, K, M, X, days, i, j, dev;

    cout << "Производительность 1: \n", cin >> A;

    cout << "Производительность 2: \n", cin >> B;

    cout << "Отдых 1: \n", cin >> K;

    cout << "Отдых 2:\n", cin >> M;

    cout << "Количество деревьев: \n", cin >> X;

    if (2 <= K && 2 <= M && 1 <= X && 1 <= A && 1 <= B) {

    dev = X, days = 0, i = 0, j = 0;

    while (dev > 0) {

    i += 1, j += 1;

    if (i != K) dev -= A;

    else i = 0;

    if (j != M) dev -= B;

    else j = 0;

    days += 1;

    }

    cout << "Количество дней: " << days << endl;

    }

    else cout << "Данные введены не верно!" << endl;

    system("pause");

    }

    Примеры работы программы

    Пример из задания:



    Пример (общий):



    Пример неверно введеных данных:



    Выводы

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


    написать администратору сайта