Задачка по С++. Помогите плз
Напишите пожалуйста текст программы для следующего задания: найти сумму элементов между первым и последним нулевыми элементами одномерного массива. (Размер массива не более 20 символов) . Помогите плз.
Напишите пожалуйста текст программы для следующего задания: найти сумму элементов между первым и последним нулевыми элементами одномерного массива. (Размер массива не более 20 символов) . Помогите плз.
#include
#include
#include
using namespace std;
typedef unsigned int index_t;
struct interval {
interval() : start(-1), stop(-1), exists(false) { }
size_t start;
size_t stop;
bool exists;
};
interval choice(interval, long *, const size_t, long = 0, long = 0);
long long sum(long *, interval);
int main() {
srand(unsigned(time(NULL)));
const size_t size = 20;
long a[size];
long * p = a;
do *p = rand() % 19 - 9; while (++p < a + size);
p = a;
do cout << setw(3) << *p; while (++p < a + size);
cout << endl;
interval i;
i = choice(i, a, size);
if (i.exists) cout << " Sum = " << sum(a, i) << endl;
else cout << " Does not exist!\n\a";
cin.get();
return 0;
}
long long sum(long * _a, interval _i) {
long long s = 0;
while (++_i.start < _i.stop) s += _a[_i.start];
return s;
}
interval choice(interval _i, long * _a, const size_t _s, long _l, long _r) {
long * p = _a;
for (index_t n = 0; n < _s; n++) if (_a[n] == _l) { _i.start = n; break; }
for (index_t n = _s - 1; n; n--) if (_a[n] == _r) { _i.stop = n; break; }
if (_i.stop - _i.start > 2) _i.exists = true;
return _i;
}
ты не туда вопрос задал
могу написать, если чем-нибудь меня заинтересуешь )))
Фигня. Чем позориться, отрыл бы учебник и сам сделал: