Другие языки программирования и технологии

Написать функцию, вычисляющую произведение элементов массива, расположенных между первым и вторым нулевым элементам

на языке с++
#include <iostream>
#include <ctime>
#include <iomanip>

using namespace std;

double mult(int *, const size_t);
bool check(int *, const size_t);

int main () {
    locale::global(locale(""));
    srand(unsigned(time(0)));

    const size_t size = 36;
    int arr[size];
    for (size_t n = 0; n < size; n++) arr[n] = rand() % 10;
    for (size_t n = 0; n < size; n++) cout << setw(2) << arr[n];

    double result;
    if (result = mult(arr, size)) cout << "\n Произведение равно: " << result << endl;
    else cout << "\n А нету! \n";

    cin.get(); cin.get();
    return 0;
}

double mult(int * _array, const size_t _size) {
    bool start = false, finish = true;
    double m = 1;

    if (check(_array, _size)) {    
        for (size_t n = 0; n < _size; n++) {
            if (start && !_array[n]) break;
            if (start) m *= _array[n];
            if (finish && !_array[n]) start = true;
        }
    } else m = 0;
    return m;
}

bool check(int * _array, const size_t _size) {
    size_t count = 0;

    for (size_t n = 0; n < _size; n++) {
        if (count > 1) return true;
        else if (!_array[n]) ++count;
        if (!_array[n] && !_array[n - 1]) return false;
    }
    return false;
}
Vitaly A
Vitaly A
72 960
Лучший ответ
for( i = 0; a[ i ] != 0; i++ ); for( ++i; a[ i ] != 0; i++ ) m = m * a[ i ];
Жека Пименов
Жека Пименов
34 701
Отписался Вам на почту.
Игорь ***
Игорь ***
1 719

Похожие вопросы