Задание:
В одномерном массиве, состоящем из 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;
}
Какая разница сколько в массиве нулей, если нужно искать произведение, только, между первым и вторым.
#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;
}
извините я этот язык не знаю, если хотите могу объяснить логику работы, или написать на паскале (к сожалению кроме делфи ни чем другим не владею) если что пишите на почту
Похожие вопросы
- помогите пожалуста с одномерным массивом в Pascal
- Помогите с программой на массивы
- Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:
- Помогите пожалуйста решить задачи по информатике, одномерные массивы. Си шарп. Очень срочно. Пожалуйста!!!!
- Помогите сделать лабораторную работу по теме "Одномерные массивы" [C++]
- Помогите с С++. Надо найти произведение элементов одномерного массива между первым и последним 0.
- Нужно подправить программу в Pascal на одномерные массивы.
- Помогите с одномерным массивом. Напишите код на Паскале.
- В одномерном массиве, состоящем из n вещественных элементов, вычис- лить: 39 1) сумму положительных элементов массив
- Microsoft Visual C++ 6.0 В одномерном массиве, состоящем из n вещественных элементов, вычислить...