С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 07.01.2020
Сообщений: 2

n заготовок необходимо обработать на m одинаковых станках

06.06.2022, 21:30. Показов 255. Ответов 0
Метки #c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,есть код для обработки n заготовок на 2 станках,подскажите как можно изменить,чтобы вообдить количество станков.
#include <algorithm>
#include <bitset>
#include <fstream>
#include <iostream>
#include <vector>
#include <iomanip> // манипуляторы ввода/вывода
#include <windows.h>
using namespace std;
///////////////////////////////////////////////////////////////////////////////
static const int ITEMS_TOTAL_MIN = 1;
static const int ITEMS_TOTAL_MAX = 1000;
///////////////////////////////////////////////////////////////////////////////
typedef std::vector < int > T_processing_times;
typedef std::bitset < ITEMS_TOTAL_MAX > T_process_on_first;

///////////////////////////////////////////////////////////////////////////////
ofstream fout;

void input_processing_times_txt(T_processing_ times& processing_times)
{
int items_total;

fout.open("file.txt");
if (fout.fail())
{
//если произошла ошибка, то выводим сообщение
cout << "Произошла ошибка при открытии файла file.txt";
}
else
{
do
{
std::cout << "Количество обрабатываемых деталей ("
<< ITEMS_TOTAL_MIN
<< ".."
<< ITEMS_TOTAL_MAX
<< "): ";
std::cin >> items_total;
fout << "Количество обрабатываемых деталей (" << ITEMS_TOTAL_MIN << ".." << ITEMS_TOTAL_MAX << "):" << items_total << std::endl;
} while (
items_total
< ITEMS_TOTAL_MIN

|| items_total
> ITEMS_TOTAL_MAX
);

std::cout << std::endl
<< "Время обработки "
<< items_total
<< " деталей:"
<< std::endl;
fout << "\nВремя обработки " << items_total << " деталей:";

for (int i{}; i < items_total; ++i)
{
int time_cur;

do
{
std::cout << "Время обработки детали "
<< i + 1
<< "(> 0)\t: ";

std::cin >> time_cur;
fout << "\nВремя обработки детали " << i + 1 << "(> 0):" << time_cur;
} while (time_cur <= 0);

processing_times.push_back(time_cur);
}
}



}
///////////////////////////////////////////////////////////////////////////////
void set_process_on_first_optimal_txt(T_proce ssing_times const& processing_times, T_process_on_first& process_on_first_optimal)
{
int processing_time_min{};
unsigned variants_total = 1 << processing_times.size();

for (unsigned variant_ind{}; variant_ind < variants_total; ++variant_ind)
{
T_process_on_first process_on_first(variant_ind);
int time_1{};
int time_2{};

for (unsigned item_ind{}; item_ind < processing_times.size(); ++item_ind)
{
(
process_on_first.test(item_ind)
? time_1
: time_2
)

+= processing_times[item_ind];
}

auto time_cur = max(time_1, time_2);

if (
processing_time_min == 0
|| time_cur < processing_time_min
)
{
processing_time_min = time_cur;
process_on_first_optimal = process_on_first;
}
}
}
///////////////////////////////////////////////////////////////////////////////
void print_distribution_processing_txt(T_proc essing_times const& processing_times, T_process_on_first const& process_on_first)
{
std::cout << std::endl;

for (size_t i{}; i < processing_times.size(); ++i)
{
std::cout << "Деталь # "
<< i + 1
<< " обрабатывается на станке "

<< (
process_on_first.test(i)
? 1
: 2
)

<< std::endl;
fout << "\nДеталь # "<< i + 1<< " обрабатывается на станке "<< (process_on_first.test(i)? 1: 2);
}
fout.close();
std::cout << "Формирование файла......" << std::endl;
Sleep(5000);
std::cout << "Файл создан." << std::endl;
}

///////////////////////////////////////////////////////////////////////////////
void input_processing_times(T_processing_time s& processing_times)
{
int items_total;

do
{
std::cout << "Количество обрабатываемых деталей ("
<< ITEMS_TOTAL_MIN
<< ".."
<< ITEMS_TOTAL_MAX
<< "): ";
std::cin >> items_total;
}
while (
items_total
< ITEMS_TOTAL_MIN

|| items_total
> ITEMS_TOTAL_MAX
);

std::cout << std::endl
<< "Время обработки "
<< items_total
<< " деталей:"
<< std::endl;

for (int i{}; i < items_total; ++i)
{
int time_cur;

do
{
std::cout << "Время обработки детали "
<< i + 1
<< "(> 0)\t: ";

std::cin >> time_cur;
} while (time_cur <= 0);

processing_times.push_back(time_cur);
}
}
///////////////////////////////////////////////////////////////////////////////
void set_process_on_first_optimal(T_processin g_times const& processing_times,T_process_on_first& process_on_first_optimal)
{
int processing_time_min{};
unsigned variants_total = 1 << processing_times.size();

for (unsigned variant_ind{}; variant_ind < variants_total; ++variant_ind)
{
T_process_on_first process_on_first(variant_ind);
int time_1{};
int time_2{};

for (unsigned item_ind{}; item_ind < processing_times.size(); ++item_ind)
{
(
process_on_first.test(item_ind)
? time_1
: time_2
)

+= processing_times[item_ind];
}

auto time_cur = max(time_1,time_2);

if (
processing_time_min == 0
|| time_cur < processing_time_min
)
{
processing_time_min = time_cur;
process_on_first_optimal = process_on_first;
}
}
}
//////////////////////////////////////////////////////////////////////////////
void print_distribution_processing (T_processing_times const& processing_times,T_process_on_first const& process_on_first)
{
std::cout << std::endl;

for (size_t i{}; i < processing_times.size(); ++i)
{
std::cout << "Деталь # "
<< i + 1
<< " обрабатывается на станке "

<< (
process_on_first.test(i)
? 1
: 2
)

<< std::endl;
}
}
///////////////////////////////////////////////////////////////////////////////

int prompt_menu_item()
{
// Выбранный вариант меню
int variant;

std::cout << "----------MENU----------\n";
std::cout << "Выберите вариант\n" << std::endl;
std::cout << "1. Выполнить распределение деталей\n"
<< "2. Сохранить результат в файл\n"
<< "3. Выйти\n" << std::endl;
std::cout << ">>> ";
std::cin >> variant;
return variant;
}

int main()
{

START:
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int variant = prompt_menu_item();
switch (variant)
{
case 1:
{

T_processing_times processing_times;
input_processing_times(processing_times) ;

T_process_on_first process_on_first_optimal;

set_process_on_first_optimal
(
processing_times,
process_on_first_optimal

);

print_distribution_processing
(
processing_times,
process_on_first_optimal
);

goto START;
}
case 2:
{
T_processing_times processing_times;
input_processing_times_txt(processing_ti mes);

T_process_on_first process_on_first_optimal;
set_process_on_first_optimal_txt
(
processing_times,
process_on_first_optimal

);

print_distribution_processing_txt
(
processing_times,
process_on_first_optimal
);

}
case 3:
{
std::cout << "Выход из программы..." << std::endl;
exit(EXIT_SUCCESS);
break;
default:
std::cerr << "Вы выбрали неверный вариант" << std::endl;
exit(EXIT_FAILURE);
}

return 0;

}
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2022, 21:30
Ответы с готовыми решениями:

На вертикально–фрезерном станке рабочий должен обработать партию из n заготовок в размер H .
Народ помогите пожалуйста написать программу. На вертикально–фрезерном станке рабочий должен обработать партию из n заготовок в размер...

Сколькими способами можно разделить изготовление одинаковых деталей на трёх станках
Доброго времени суток. Помогите решить задачу, пожалуйста. Сколькими способами можно разделить изделие 8 одинаковых деталей из латуни и...

В первый час работница делает 12 заготовок, во второй – на 2 заготовки больше и т.д. Сколько заготовок она сделает
В первый час работница делает 12 заготовок, во второй – на 2 заготовки больше и т.д. Сколько заготовок она сделает за 8 часов работы?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2022, 21:30
Помогаю со студенческими работами здесь

Необходимо ввести и обработать текст
Здравствуйте! Задание: ввести текст, не превышающий 5 строк, в каждой строке максимум 80 символов. Я бы хотел как-то упростить ввод,...

Необходимо обработать данные из csv(asterisk)
Добрый день. Такой вопрос - имеются данные cdr отчет из asterisk. Таблица вида: 19.11.2015 0:00 15:42:14 &quot;8495ХХХХХХХ&quot; ...

Как обработать sql запрос при одинаковых колонках разных таблиц?
Собственно сабж (Как обработать sql запрос при одинаковых колонках разных таблиц?) Имеем постгрес: Таблица site_contex.*, имеет...

Задача на массивы: Необходимо обработать имеющиеся данные
Составить и решить задачу, с подробным объяснением шагов(функции и процедуры не использовать): Имеется список оценок, выставленных вашими...

Необходимо программно обработать группу rft файлов
добрый день. Эту свою тему копирую сюда, в надежде что тут много живых :) В общем задача такая: нужно зайти по очереди во все файлы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru