Помогите пожалуйста разобраться ,в чем причина проблемы. Найти первый положительный и последний отрицательный элементы получилось(хоть и сделал это замудренно), а вот когда дошло дело до нахождения произведения ,тут пошли трудности,и я не знаю , в чем может быть причина
#include #include #include #include using namespace std; #define N 6 int main() < setlocale(LC_ALL, «ru»); srand(time(NULL)); int mass[N]; //Заполняем массив и выводим на экран for (int i = 0; i < N; ++i) < mass[i] = rand() % 100; cout unsigned int proizv = 1; int first_plus, last_minus; //Ищем первый положительный элемент массива for (int i = 0; i < N; ++i) if (mass[i] % 2 == 0) < cout //Иверсируем массив ,для нахождения последнего отрицательного элемента for (int i = 0; i < (N / 2); i++) < int c = mass[i]; mass[i] = mass[N — 1 — i]; mass[N — 1 — i] = c; >//Ищем последний отрицательный элемент массива for (int i = 0; i < N; ++i) if (mass[i] % 2 != 0) < cout //Приводим массив в изначальный вид for (int i = 0; i < (N / 2); i++) < int c = mass[i]; mass[i] = mass[N — 1 — i]; mass[N — 1 — i] = c; >//. ТУТ НАЧИНАЕТСЯ ПРОБЛЕМА. //Сортируем. for (int i = first_plus + 1;i < last_minus; i++) < proizv *= mass[i]; >cout
Нужна ли высшая математика программисту? #программирование
Консоль:
Отслеживать
25.7k 3 3 золотых знака 26 26 серебряных знаков 38 38 бронзовых знаков
задан 13 дек 2021 в 17:40
user397208 user397208
Может для начала найти последний отрицательный очевидным образом? Например, int last_minus; for (last_minus = N — 1; last_minus >= 0; last_minus—) if (mass[last_minus] < 0) break; А у вас цикл вычислеия произведения ни разу не выполняется, т.к. на первом шаге условие i >first_plus ложно. Можно опят же попроще написать — for (int i = first_plus; i
13 дек 2021 в 17:55
Благодарю. Извините ,я только учусь)
– user397208
13 дек 2021 в 17:57
Извиняться тут не за что. Успехов! / (и не забудьте, если last_minus < first_plus, то их надо поменять местами — if (. ) )
13 дек 2021 в 17:57
А 91 разве отрицательное число?
13 дек 2021 в 18:02
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
- Во-первых у вас в коде находится первое положительное число последнее нечётное. Чтобы находить первое положительное условие должно быть mas[i] > 0.
- Во-вторых у вас неправильный индекс последнего отрицательного
- В-третьих операция логического и в С обзначается как , так что вместо and следует написать
unsigned int proizv = 1; int first_plus, last_minus; //Ищем первый положительный элемент массива for (int i = 0; i < N; ++i) if (mass[i] >0) < cout //Ищем последний отрицательный элемент массива for (int i = N — 1; i >= 0; —i) < if (mass[i] < 0) < last_minus = i; >> for (int i = first_plus + 1 ; i < last_minus; i++) < proizv *= mass[i]; >// Если last_minus раньше first_plus: for (int i = last_minus + 1 ; i < first_plus; i++) < proizv *= mass[i]; >cout
Отслеживать
ответ дан 13 дек 2021 в 18:02
356 1 1 серебряный знак 5 5 бронзовых знаков
Как решать задачи как программист. Не пиши код, не посмотрев это видео
А может лучше искать последний отрицательный, перебирая массив с конца? И что будет, если индекс первого положительного больше индекса последнего отрицательного?
13 дек 2021 в 21:16
Источник: ru.stackoverflow.com
Программист написал программу нахождения произведения элементов массива, но допустил в ней ошибку.
1) Что получится в результате выполнения этой программы, если в качестве элементов массива ввести числа: 1, -2, 3, -4, 5, -6, 7, -8, 9, -10?
2) Придумайте пример такого массива, обработка которого с помощью этой программы приводила бы к правильному результату.
3) Найдите ошибку, допущенную программистом.
Ответы 1
1)-02) p:=1 перед циклом3) p=0 перед циклом,а любое число *0=0
Добавить свой ответ Ответить на вопрос
Последние вопросы
Источник: znanija.site
Python задача. Найдите сумму и произведение элементов массива.
Заполните массив числами, введёнными пользователем с клавиатуры. Вычислить сумму и произведение элементов массива. Вывести сам массив, полученную сумму и произведение его элементов. Разбор задачи на языке python
Алгоритм решения задачи на python
1) Установите переменную, которая будет хранить сумму, и присвойте ей 0, а переменную, в которой будет храниться произведение, присвойте 1.
2) Используйте for для решения задачи
3) Выведите сумму и произведение.
Код для нахождения суммы и произведения массива на python
a = [0]*10
s = 0
m = 1
for i in range(10):
a[i] = float(input(‘Введите число ‘))
s += a[i]
m *= a[i]
print(a)
print(‘Сумма = ‘,s)
print(‘Произведение = ‘,m)
Источник: blogproger.ru