profile
Размещено 4 года назад по предмету Информатика от hinariyandere

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

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


Например, вместо 1,3,4,5,6,7,8,10,12,16,17,20,21,22,23,24

Записывается 1,3-8,10,12,16-17,20-24




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


Вводится сначала число N - общее количество изделий. Затем число M - количество изделий, оказавшихся бракованными. Далее вводятся в возрастающем порядке номера бракованных изделий.


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


Выведите в одной строке список номеров бракованных изделий в сокращенном виде. Интервалы должны разделяться запятой. В строке не должно быть пробелов.


Ограничения 1≤M≤N≤1000000.


Пример


Вход Выход

10 5

1 3 5 7 9

1,3,5,7,9


40 16

1 3 4 5 6 7 8 10 12 16 17 20 21 22 23 24

1,3-8,10,12,16-17,20-24

  1. Ответ на вопрос
    Ответ на вопрос дан maxpavlutenkof

    #include <iostream>

    using namespace std;

    int main()

    {

    int num;

    cin >> num >> num;

    int* ans = new int[num];

    for (int jjj = 0; jjj < num; jjj++) cin>> ans[jjj];

    for (int jjj = 1; jjj < num; jjj++) {

     if (ans[jjj - 1] != ans[jjj] - 1) cout << ans[jjj - 1] << ",";

     else {

      cout << ans[jjj - 1];

      int kkk = jjj;

      for (kkk; kkk < num; kkk++)

                             if (ans[kkk - 1] != ans[kkk] - 1) break;

      if (kkk - jjj > 1) cout << "-" << ans[kkk - 1];

      else cout << "," << ans[kkk - 1];

                 jjj = kkk;

      if (num - jjj) cout << ",";

     }

     if (num - jjj == 1) cout << ans[jjj];

    }

    }

    1. Ответ на вопрос
      Ответ на вопрос дан maxpavlutenkof
      к тому же меня смущает то, что по условию мы вводи общее количество изделий ,а в решении оно никак не фигурирует
    2. Ответ на вопрос
      Ответ на вопрос дан hinariyandere
      может как-то переделать на вывод дефиса эту часть?
      if (k - j > 1) cout << "-" << ans[k - 1];
      else cout << "," << ans[k - 1];
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.