Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2017, 23:22   #1
elsum
Новичок
Джуниор
 
Регистрация: 22.12.2017
Сообщений: 2
По умолчанию Найти произведение последних отрицательных элементов массива - C++

Первую часть программы написал, но не знаю, как дальше. Подскажите, пожалуйста
N - количество всех элементов
M - количество последних отрицательных элементов
Как написать цикл для нахождения последних M отрицательных элементов, который будет считать их произведение?

#include <iostream>
#define arr 10
using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
int N, i, M, k = 0;
cout << "Длинна массива:\n n = ";
cin >> N;
cout << "Элементы массива:\n ";
int a[arr];
for (i = 0; i < N; i++)
{
cout << "a[" << i + 1 << "] = ";
cin >> a[i];
}
cout << "Введите M:\n M = ";
cin >> M;
elsum вне форума Ответить с цитированием
Старый 23.12.2017, 01:40   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

У вас на полу лежат красные и синии кубики в ряд. Вам говорят: вытащи три последних красных. Что вы будете делать? Как поступите?
p51x вне форума Ответить с цитированием
Старый 23.12.2017, 02:01   #3
elsum
Новичок
Джуниор
 
Регистрация: 22.12.2017
Сообщений: 2
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
У вас на полу лежат красные и синии кубики в ряд. Вам говорят: вытащи три последних красных. Что вы будете делать? Как поступите?
Я уже думал по-разному. Пришел к идее сначала расположить элементы в обратном порядке, а потом найти произведение, но не получается правильно цикл написать. Вот, что пока что получилось:

for (i = N - 1; i >= N - M; --i)
{
if (a[i] < 0)
k *= a[i];
cout << a[i] << endl;
}
if (a[i] < 0)
cout << k << endl;
else if (a[i] >= 0)
cout << "Отрицательных элементов нет." << endl;

То есть отбираются M последних отрицательных элементов и перемножаются. Например, есть массив -1 -2 -3 -4 -5 и пользователь задал M = 2, тогда произведение посчитается и будет 20. Но если массив будет таким -1 -2 -3 4 -5, M = 2, то программа выдаст "Отрицательных элементов нет". Но мне нужно, что бы она брала два крайних отрицательных элемента. В данном случае нужно взять -5 и -3 и найти их произведение.

Последний раз редактировалось elsum; 23.12.2017 в 03:00.
elsum вне форума Ответить с цитированием
Старый 23.12.2017, 08:36   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Возвращаемся к детским кубикам (а ведь в 2-3 года с этим прекрасно справляются...): Лежат к к с с к с кубики и вам надо взять два синих с конца. Что делать будете? Будете ли проверять только два последних или ..?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти произведение квадратов последних L отрицательных элементов в массиве A = {a [i]}. Дима112221 Помощь студентам 0 04.12.2016 19:41
рекурсия произведение отрицательных элементов массива X, расположенных после первого положительного iyoulka Помощь студентам 0 06.05.2016 22:12
найти произведение отрицательных элементов под главной диагональю inflamedparadox Microsoft Office Word 0 14.02.2014 01:22
11. Найти произведение элементов нечетных строк массива. Вывести сам массив и произведение. p-6 Паскаль, Turbo Pascal, PascalABC.NET 1 29.11.2012 23:37
В файле F1 найти произведение последних пяти элементов. Полученным значением заменить каждую вторую компо SEKTOR Помощь студентам 0 12.04.2010 23:27