Пример:
Ввод: cpi = 100,0, платежи = [100,0, 94,0, 90,0, 100,0, 200,0, 100,0, 100,0, 100,0, 100,0, 100,0, 100,0, 100,0]
Вывод: paystring = [0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
Объяснение: Поскольку первый платеж был 100,0 иэто больше или равно cpi - 5.0 (95.0), тогда первый элемент в выходных данных равен 0. Тогда следующий элемент равен 1, поскольку 94.0 меньше, чем cpi - 5.0 (95.0), т.е. пропустил платеж, так как следующий элемент90,0 меньше, чем cpi - 5,0 (95,0), т. Е. Пропустили другой платеж, чем сейчас, когда у нас 2 (или 2 пропущенных платежа).Тогда в следующем элементе у нас было 100, что считается как 1 платеж, так что теперь мы выполнили тот платеж, который должен был быть выполнен, но мы все еще не покрыли другие два платежа за предыдущий месяц, поэтому мы все еще на 2. Затем процесс продолжается.
Пока у меня есть это:
double cpi = 100.0;
std::vector<double> payments = { 100.0, 94.0, 90.0, 100.0, 200.0, 300.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0 };
std::vector<int> paystring(payments.size(), 0);
int count = 0;
for (int i = 0; i < payments.size(); ++i) {
if (payments[i] <= cpi - 5.0) {
paystring[i] = ++count;
}
else {
paystring[i] = count;
}
}
for (auto it : paystring)
std::cout << it << " ";
Хотя это не правильно, так как не удается обновить счетчик, когда я сделал, скажем, полный платеж или больше, чем причитающаяся сумма (CPI)).Я просто хочу знать, что мне нужно изменить в моей логике, чтобы сделать эту работу.Дайте мне знать, если приведенный пример неясен.
Например, скажем, у меня есть
Ввод: cpi = 100.0, платежи = [100.0, 94.0, 90.0, 100.0, 200.0, 100.0, 300.0, 100.0, 100.0, 100.0, 100.0, 100.0]
Вывод: [0, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0]
Но я получаю
[0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
Вот еще несколько правильных примеров:
![enter image description here](https://i.stack.imgur.com/CJZ9D.png)