Другие языки программирования и технологии
Задачка по С++. Помогите плз
Напишите пожалуйста текст программы для следующего задания: найти сумму элементов между первым и последним нулевыми элементами одномерного массива. (Размер массива не более 20 символов) . Помогите плз.
#include <iostream>
#include <iomanip>
#include <ctime>
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;
}
#include <iomanip>
#include <ctime>
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;
}
Фигня. Чем позориться, отрыл бы учебник и сам сделал: 

могу написать, если чем-нибудь меня заинтересуешь )))
ты не туда вопрос задал
Тимур ***
программирование же
Похожие вопросы
- Как создать бинарное дерево в c++ новичку(т.е. мне)???!Помогите плз!
- У меня проблемы с HTML!!! Помогите ПЛЗ!!!
- синий экран смерти, люди помогите плз
- Помогите плз решить задачу в Delphi.
- Мой компьютер взломали ((( помогите плз!!!
- Задачка для программистов. Поможете? Для программеров это проще простого (я знаю это), а вот я чёто не понимаю ваще.
- небольшая задачка по С++, помогите, кому не лень
- Помогите плз с Паскаль прогой!!!
- Срочно!!!!Программирование на Borland Pascal. Срочно помогите!!!!Плз!!!
- Написание вируса с нуля... помогите плз! Оо