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

Помогите с программой Одномерные массивы и указатели

Задание:
В одномерном массиве, состоящем из N целых элементов, вычислить:
1) номер максимального элемента массива;
2) произведение элементов массива, расположенных между первым и вторым нулевыми
элементами.
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине — элементы, стоявшие в четных позициях.

Программа работает и все считает, но нужно добавить условие для второго пункта задания что бы выводил сообщение "Невозможно посчитать произведение" когда:
1) Когда нет нулей
2) Когда в массиве один ноль
3) Когда в массиве больше двух нулей
4) когда между нулями стоит один элемент
5) когда нули рядом друг с другом

Помогите дописать программу, я не пойму как эти условия добавить. Пожалуйста.

Вот мой код:

#include <iostream>

using namespace std;

int main()
{setlocale(0,"rus");
int *m,n,i,j,UMN=1,NOM_MAX,MAX=-1000,NOMER1=-1,NOMER2=-1;
cout<<"Введите кол-во элементов: ";
cin>>n;

m=new int[n];

cout<<"Заполните массив из "<<n<<">>m;
if(m==0 && NOMER1!=-1 && NOMER2==-1)NOMER2=i;
if(m==0 && NOMER1==-1)NOMER1=i;

if(m>MAX){MAX=m;NOM_MAX=i;}
}

for(i=NOMER1+1;i<nomer2;i++)>;
}

cout<
> Когда в массиве больше двух нулей

Какая разница сколько в массиве нулей, если нужно искать произведение, только, между первым и вторым.

#include <iostream>
#include <ctime>
using namespace std;
int main() {
    locale::global(locale(""));
    cout << " Введите количество элементов массива: ";
    size_t size;
    cin >> size;

    srand(unsigned(time(0)));
    int * arr = new int [size];    
    for (size_t n = 0; n < size; n++) arr[n] = rand() % 10;
    for (size_t n = 0; n < size; n++) cout << arr[n] << ' ';

    int max = arr[0];
    size_t max_index = 0;

    for (size_t n = 1; n < size; n++)
        if (arr[n] > max) {
            max = arr[n];
            max_index = n;
        }

    cout << "\n Первый максимальный элемент массива имеет номер: " << max_index + 1;

    bool is_zero = false, is_second = false;
    rsize_t count = 0;
    double mult = 1;

    for (size_t n = 0; n < size; n++) {
        if (!is_zero && arr[n]) continue;
        if (!is_zero) {
            is_zero = true;
            continue;
        }
        if (arr[n]) mult *= arr[n];
        else if (n != size) {
            is_second = true;
            break;
        }
        ++count;
    }

    cout << endl;
    if (!is_zero) cout << " Нет нулевых элементов! ";
    else if (is_second && !count) cout << " Первый и второй нулевые элементы стоят рядом! ";
    else if (is_second && count == 1) cout << " Между первым и вторым нулевыми всего один элемент! ";
    else if (!is_second) cout << " В массиве всего один нулевой элемент! ";
    else cout << " Произведение = " << mult;
    cout << endl;

    delete[] arr;
    arr = NULL;

    cin.get(); cin.get();
    return 0;
}
ЛА
Лёха Александров
75 624
Лучший ответ
извините я этот язык не знаю, если хотите могу объяснить логику работы, или написать на паскале (к сожалению кроме делфи ни чем другим не владею) если что пишите на почту
Oleg Galaev
Oleg Galaev
55