Здравствуйте, Аноним, Вы писали:
А>Как найти число пропущенных порядковых номеров в set<int> X;?
А>Например:
А>X={234,235,236,237} --- result = 0 // ничего не пропущено
А>X={14,16,19} --- result = 3 // так как пропущены 15,17,18
А>Спасибо за ответы
// если размер X больше 1:int res = 0;
std::set<int>::iterator it = X.begin();
while(it != X.end())
{
res += (*(it+1) - *it);
if(++it == X.end())
break;
}
Здравствуйте, Аноним, Вы писали:
А>Как найти число пропущенных порядковых номеров в set<int> X;?
А>Например:
А>X={234,235,236,237} --- result = 0 // ничего не пропущено
А>X={14,16,19} --- result = 3 // так как пропущены 15,17,18
А>Спасибо за ответы.
Видимо, взять разницу между расстоянием от большего до меньшего и размером контейнера...
Здравствуйте, Аноним, Вы писали:
А>Как найти число пропущенных порядковых номеров в set<int> X;?
А>Например:
А>X={234,235,236,237} --- result = 0 // ничего не пропущено
А>X={14,16,19} --- result = 3 // так как пропущены 15,17,18
А>Спасибо за ответы.
Здравствуйте, Черепнин Сергей, Вы писали:
ЧС>Здравствуйте, Аноним, Вы писали:
А>>Как найти число пропущенных порядковых номеров в set<int> X;?
А>>Например:
А>>X={234,235,236,237} --- result = 0 // ничего не пропущено
А>>X={14,16,19} --- result = 3 // так как пропущены 15,17,18
А>>Спасибо за ответы
ЧС>
ЧС> // если размер X больше 1:
ЧС> int res = 0;
ЧС> std::set<int>::iterator it = X.begin();
ЧС> while(it != X.end())
ЧС> {
ЧС> res += (*(it+1) - *it);
ЧС> if(++it == X.end())
ЧС> break;
ЧС> }
ЧС>
Мда. Здесь неправильно сделано почти всё, что можно неправильно сделать.
Здравствуйте, BitField, Вы писали:
BF>Что-то к вечеру все думать перестали:
Нет — это просто пальцы за мыслью не успевают — скобочки вокруг (size — 1) не вставились