Форум программистов, компьютерный форум CyberForum.ru

Матрица, Произведение элементов в тех строках,который не содержат отрицательных элементов - C++

Восстановить пароль Регистрация
 
noname933
0 / 0 / 0
Регистрация: 02.11.2010
Сообщений: 8
03.11.2010, 17:38     Матрица, Произведение элементов в тех строках,который не содержат отрицательных элементов #1
ребята помогите пожалуйста!!
Матрица заполняется рандомно от5 до -5
Дана целочисленная квадратная матрица.
Определить:
Произведение элементов в тех строках,который не содержат отрицательных элементов

Добавлено через 34 минуты
матрицу я саму сделал,а вот как определить:Произведение элементов в тех строках,который не содержат отрицательных элементов не понимаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2010, 17:38     Матрица, Произведение элементов в тех строках,который не содержат отрицательных элементов
Посмотрите здесь:

Определить произведение элементов в тех строках, которые не содержат отрицательных элементов; C++
произведение элементов в тех строках, которые не содержат отрицательных элементов C++
C++ Дана целочисленная прямоугольная матрица. Определить произведение элементов в тех строках, которые не содержат отрицательных элементов
Произведение элементов в тех строках, которые не содержат отрицательных элементов C++
Определить произведение элементов в тех строках, которые не содержат отрицательных элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 17:51     Матрица, Произведение элементов в тех строках,который не содержат отрицательных элементов #2
В цикле по строкам. Заводим ключ, устанавливаем его в false. Бежим по строке (цикл по столбцам). Считаем произведение. Если видим отрицательный элемент - устанавливаем ключ в true и выходим из цикла прохода по строке (тот, что по столбцам). После этого, если ключ false - выводим полученное произведение. Сбрасываем произведение. Переходи на следующую итерацию по строкам.
noname933
0 / 0 / 0
Регистрация: 02.11.2010
Сообщений: 8
03.11.2010, 18:18  [ТС]     Матрица, Произведение элементов в тех строках,который не содержат отрицательных элементов #3
это что?что за ключ не слышал про него...как он объявляется это в С++?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 18:19     Матрица, Произведение элементов в тех строках,который не содержат отрицательных элементов #4
bool key = false;
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.11.2010, 18:42     Матрица, Произведение элементов в тех строках,который не содержат отрицательных элементов #5
C++
1
2
3
4
5
6
7
8
9
10
11
//Arr - твоя матрица. Arr[i] - строка матрицы. 
//Arr[i] - начало строки, Arr[i]+N - конец строки, N - кол-во столбцов в строке
//count_if подсчитывает элементы подходящие под предикат
//в данном случае предикат - std::less<int>(), 0 - считает элементы меньше нуля
//если их нет
if(std::count_if(Arr[i], Arr[i]+N, std::bind2nd(std::less<int>(), 0))==0)
    //Считаем произведение стандартным алгоритмом accumulate
    //std::multiplies<int>() - функтор произведения
    //параметр 1 - с чего начинаем умножать. Здесь мы начинаем умножать с 1
    //и выводим это на экран
    std::cout<<std::accumulate(Arr[i], Arr[i]+N, 1, std::multiplies<int>())<<'\n';
Можно еще по другому.
C++
1
2
3
4
//find_if ищем элемент. В данном случае меньше нуля. Если не найдено
if(std::find_if(Arr[i], Arr[i]+N, std::bind2nd(std::less<int>(), 0))==Arr[i]+N)
     //Ищем произведение как и в первом случае.
     std::cout<<std::accumulate(Arr[i], Arr[i]+N, 1, std::multiplies<int>())<<'\n';
Соответственно нужен только один цикл в обоих случаях.
C++
1
for(int i=0; i<M; ++i)// M - кол-во строк в матрице
Yandex
Объявления
03.11.2010, 18:42     Матрица, Произведение элементов в тех строках,который не содержат отрицательных элементов
Ответ Создать тему
Опции темы

Текущее время: 20:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru