Напишите программу на языке C++, которая преобразует полный список номеров бракованных изделий в сокращенный вид

Напишите программу на языке C++, которая преобразует полный список номеров бракованных изделий в сокращенный вид. В компании, занимающейся производством компьютерных комплектующих, каждому изделию присваивается последовательный номер от 1 до N. После изготовления каждое изделие проходит контроль качества и либо отправляется на продажу, либо добавляется в список бракованных изделий и отправляется на списание. К сожалению, список бракованных изделий иногда становится слишком длинным. В таких случаях последовательные числа заменяются интервалом, указывающим первый и последний номер через тире.
Zayka

Zayka

Хорошо, чтобы решить эту задачу, мы можем использовать язык программирования C++ и следовать следующей последовательности шагов:

1. Объявить и инициализировать переменные. Создать переменные для хранения начального номера, конечного номера и текущего номера, а также переменную для хранения списка бракованных изделий в сокращенной форме.

c++
#include
#include
using namespace std;

int main() {
int N; // общее количество изделий
cin >> N;

int start, end; // начальный и конечный номера изделий
vector faultyList; // список бракованных изделий в сокращенной форме

// Вводим полный список бракованных изделий
for (int i = 0; i < N; i++) {
int num;
cin >> num;

// Добавляем номер изделия в список в формате строки
faultyList.push_back(to_string(num));
}


2. Отсортировать список бракованных изделий по возрастанию.

c++
sort(faultyList.begin(), faultyList.end());


3. Создать функцию для преобразования полного списка номеров бракованных изделий в сокращенный вид.

c++
// Функция для преобразования списка номеров бракованных изделий
vector shortenList(vector faultyList) {
vector result; // результирующий сокращенный список

int start = stoi(faultyList[0]); // начальный номер

for (int i = 0; i < faultyList.size(); i++) {
// Если следующий номер не является последовательным, добавляем интервал
if (stoi(faultyList[i + 1]) != stoi(faultyList[i]) + 1) {
int end = stoi(faultyList[i]); // конечный номер
string interval = to_string(start) + "-" + to_string(end); // формируем интервал

result.push_back(interval); // добавляем интервал в результирующий список
start = stoi(faultyList[i + 1]); // обновляем начальный номер
}
}

return result;
}


4. Вызвать функцию преобразования и вывести результат на экран.

c++
vector shortenedList = shortenList(faultyList);

// Выводим сокращенный список номеров бракованных изделий
for (const string& interval : shortenedList) {
cout << interval << " ";
}

return 0;
}


Теперь, когда мы запустим эту программу, она получит на вход количество изделий, а затем полный список номеров бракованных изделий. Программа отсортирует список и выведет сокращенный список номеров бракованных изделий, где последовательные номера объединены через тире.

Например, если вводим 10 и числа 1, 3, 4, 5, 6, 10, программа выведет "1 3-6 10", что означает, что у нас есть изделия с номерами 1, 3, 4, 5, 6 и 10.
Знаешь ответ?
Задать вопрос
Привет!
hello