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

Вычислить произведение не нулевых элементов массива - C++

Восстановить пароль Регистрация
 
Марина1312
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 70
22.04.2013, 08:16     Вычислить произведение не нулевых элементов массива #1
Дан одномерный массив, состоящий из N целочисленных элементов. Заполнить массив случайными числами.Вычислить произведение не нулевых элементов массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 08:16     Вычислить произведение не нулевых элементов массива
Посмотрите здесь:

C++ Вычислить сумму отрицательных, произведение положительных и количество нулевых элементов массива с нечетными индексами.
Вычислить произведение элементов массива и произвести сортировку массива C++
C++ В одномерном массиве, вычислить: а) количество элементов массива б) произведение элементов массива в) От - к +
В одномерном массиве, состоящем из n вещественных элементов, вычислить: количество элементов массива, больших С, произведение. C++
В одномерном массиве, состоящем из n элементов, вычислить произведение элементов массива с четными номерами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 12:07     Вычислить произведение не нулевых элементов массива #2
Марина1312,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <array>
#include <time.h>
#include <cstdlib>
#include <algorithm>
#include <iterator>
#include <numeric>
#include <functional>
using namespace std;
 
#define SIZE 10
 
void random(int &elem){
    elem = -10 + rand() % 21;
}
 
int Product_fun(int result, int value)
{
    return (value != 0) ? (result * value) : result;
}
 
int main() 
{ 
    srand(time(NULL));
 
    array<int, SIZE> coll;
    for_each(coll.begin(), coll.end(), random);
 
    cout << "Array: ";
    copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
 
    int product = accumulate(coll.begin(), coll.end(), 1, Product_fun);
 
    cout << "\nProduct: " << product;
 
    cout << "\n\n";
    return 0; 
}
Марина1312
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 70
22.04.2013, 12:10  [ТС]     Вычислить произведение не нулевых элементов массива #3
Цитата Сообщение от yoghurt92 Посмотреть сообщение
Марина1312,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <array>
#include <time.h>
#include <cstdlib>
#include <algorithm>
#include <iterator>
#include <numeric>
#include <functional>
using namespace std;
 
#define SIZE 10
 
void random(int &elem){
    elem = -10 + rand() % 21;
}
 
int Product_fun(int result, int value)
{
    return (value != 0) ? (result * value) : result;
}
 
int main() 
{ 
    srand(time(NULL));
 
    array<int, SIZE> coll;
    for_each(coll.begin(), coll.end(), random);
 
    cout << "Array: ";
    copy(coll.begin(), coll.end(), ostream_iterator<int>(cout, " "));
 
    int product = accumulate(coll.begin(), coll.end(), 1, Product_fun);
 
    cout << "\nProduct: " << product;
 
    cout << "\n\n";
    return 0; 
}
а попроще нельзя?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 12:13     Вычислить произведение не нулевых элементов массива #4
Марина1312, можно)
Марина1312
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 70
22.04.2013, 12:16  [ТС]     Вычислить произведение не нулевых элементов массива #5
Цитата Сообщение от yoghurt92 Посмотреть сообщение
Марина1312, можно)
вот мне бы проще)
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 12:19     Вычислить произведение не нулевых элементов массива #6
Марина1312, вот попроще

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;
 
/*функция рандомной инициализации масива*/
int random(){
    return -10 + rand() % 21;
}
 
int main() 
{ 
    srand(time(NULL));
 
    const int size(10);         //размер массива
    int mas[size];              //массив
 
    for(int i = 0; i < size; ++i)
        mas[i] = random();              //инициализируем каждый элемент случайнм числом
 
    cout << "Array: ";
    for(int i = 0; i < size; ++i)
        cout << mas[i] << " ";          //выводим массив
 
    int product(1);                     //переменная для произвденеия не нулевых элементов
    for(int i = 0; i < size; ++i)
        if(mas[i] != 0)                 //если не равен нулю
            product *= mas[i];          
 
    cout << "\nProduct: " << product;       //вывод произведения не нулевых элементов
 
    cout << "\n\n";
    return 0; 
}
Марина1312
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 70
22.04.2013, 12:21  [ТС]     Вычислить произведение не нулевых элементов массива #7
Цитата Сообщение от yoghurt92 Посмотреть сообщение
Марина1312, вот попроще

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;
 
/*функция рандомной инициализации масива*/
int random(){
    return -10 + rand() % 21;
}
 
int main() 
{ 
    srand(time(NULL));
 
    const int size(10);         //размер массива
    int mas[size];              //массив
 
    for(int i = 0; i < size; ++i)
        mas[i] = random();              //инициализируем каждый элемент случайнм числом
 
    cout << "Array: ";
    for(int i = 0; i < size; ++i)
        cout << mas[i] << " ";          //выводим массив
 
    int product(1);                     //переменная для произвденеия не нулевых элементов
    for(int i = 0; i < size; ++i)
        if(mas[i] != 0)                 //если не равен нулю
            product *= mas[i];          
 
    cout << "\nProduct: " << product;       //вывод произведения не нулевых элементов
 
    cout << "\n\n";
    return 0; 
}
спасибо)
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
22.04.2013, 13:11     Вычислить произведение не нулевых элементов массива #8
На форуме столько подобных решений, странно, что Вы ими не воспользовались. Может, нужно, каким-то другим способом?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <numeric>
 
template <class T>
T myMultiply(T x, T y)
{
    return  y ? x * y : x * 1;
}
 
int main()
{
    srand(time(0));
    const int n = 3;
    int a[n] = {0}, mul(1);
    for (int i=0; i<n; ++i)
        std::cout << (a[i] = rand()%10-3) << ' ';
    std::cout<< '\n' << std::accumulate(a, a + n, mul, myMultiply<int>);
    return 0;
}
 Комментарий модератора 
Темы объединены
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2013, 13:15     Вычислить произведение не нулевых элементов массива
Еще ссылки по теме:

Вычислить сумму максимального элемента массива и количества нулевых элементов массива C++
C++ в массиве . найти произведение нулевых элементов, количество элементов, превышающих значение среднего арифметического элементов массива
C++ Вычислить произведение элементов массива с четными номерами и количество элементов, лежащих в диапазоне

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Марина1312
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 70
22.04.2013, 13:15  [ТС]     Вычислить произведение не нулевых элементов массива #9
Цитата Сообщение от BumerangSP Посмотреть сообщение
На форуме столько подобных решений, странно, что Вы ими не воспользовались. Может, нужно, каким-то другим способом?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <numeric>
 
template <class T>
T myMultiply(T x, T y)
{
    return  y ? x * y : x * 1;
}
 
int main()
{
    srand(time(0));
    const int n = 3;
    int a[n] = {0}, mul(1);
    for (int i=0; i<n; ++i)
        std::cout << (a[i] = rand()%10-3) << ' ';
    std::cout<< '\n' << std::accumulate(a, a + n, mul, myMultiply<int>);
    return 0;
}
спасибо уже решили)
Yandex
Объявления
22.04.2013, 13:15     Вычислить произведение не нулевых элементов массива
Ответ Создать тему
Опции темы

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