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

Подсчет нечетных элементов - C++

Восстановить пароль Регистрация
 
ann333
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 39
09.06.2013, 21:39     Подсчет нечетных элементов #1
Сформировать динамический массив В размера m × n из случайных целых чисел. Составить программу для подсчета произведения нечетных элементов двумерной матрицы В, используя функцию для обработки массива.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.06.2013, 00:09     Подсчет нечетных элементов #2
Цитата Сообщение от ann333 Посмотреть сообщение
используя функцию для обработки массива
Сейчас угадаю - сплошь "велосипеды", никаких std::generate(), std::accumulate(), etc... ?
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <cstdlib>
#include <ctime>
 
void fill_row(int * row, int count, const int minValue, const int maxValue) {
    while ( count-- )
        *row++ = rand() % (maxValue - minValue + 1) + minValue;
}
 
void fill_matrix(int ** matrix, int rows, int columns, const int minValue, const int maxValue) {
    while ( rows-- )
        fill_row(*matrix++, columns, minValue, maxValue);
}
 
void dump_row(const int * row, int count) {
    while ( count-- )
        std::cout << *row++ << ( ( count ) ? ' ' : '\n' );
}
 
void dump_matrix(const int ** matrix, int rows, int columns) {
    while ( rows-- )
        dump_row(*matrix++, columns);
}
 
long int row_odds_product(const int * row, int count) {
    long int ret = 1L;
    
    while ( count-- ) {
        if ( *row & 1 )
            ret *= *row;
        ++row;
    }
    
    return ret;
}
 
long long int matrix_odds_product(const int ** matrix, int rows, int columns) {
    long long int ret = 1LL;
    
    while ( rows-- )
        ret *= row_odds_product(*matrix++, columns);
    
    return ret;
}
 
int main() {
    const int minVal = 0;
    const int maxVal = 9;
    
    int ** matrix, rows, columns;
    
    srand(time(NULL));
    
    std::cout << "Rows: ";
    std::cin >> rows;
    std::cout << "Columns: ";
    std::cin >> columns;
    
    matrix = new int* [ rows ];
    for ( int i = 0; i < rows; ++i )
        matrix[i] = new int [ columns ];
    
    fill_matrix(matrix, rows, columns, minVal, maxVal);
    
    std::cout << "Matrix:" << std::endl;
    dump_matrix((const int**)matrix, rows, columns);
    std::cout << "Product of odd elements: " << matrix_odds_product((const int**)matrix, rows, columns) << std::endl;
    
    for ( int i = 0; i < rows; ++i )
        delete [] matrix[i];
    delete [] matrix;
    
    return 0;
}
Код
$ ./matrix_odds_product
Rows: 4
Columns: 5
Matrix:
4 5 7 3 8
8 3 4 3 1
6 7 4 1 2
1 8 1 1 5
Product of odd elements: 33075
ann333
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 39
10.06.2013, 00:15  [ТС]     Подсчет нечетных элементов #3
easybudda, к сожалению да. Вооьбще не понимаю здесь. если можно, самый самый простой способ. без векторов, различный замудренных кодов.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.06.2013, 00:27     Подсчет нечетных элементов #4
Цитата Сообщение от ann333 Посмотреть сообщение
если можно, самый самый простой способ. без векторов, различный замудренных кодов.
Я думал - это и есть "простой", не? А с чем сложности?
ann333
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 39
10.06.2013, 00:34  [ТС]     Подсчет нечетных элементов #5
easybudda, std::cout << .....
std-это что?
если не сложно с комментариями
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.06.2013, 00:58     Подсчет нечетных элементов #6
Цитата Сообщение от ann333 Посмотреть сообщение
std-это что?
Прочитайте в учебнике главу про пространства имён - станет понятнее. Заодно поймёте, зачем в начале некоторых программ
C++
1
using namespace std;
пишут...
2e1773ce
6 / 6 / 0
Регистрация: 10.03.2013
Сообщений: 96
10.06.2013, 01:00     Подсчет нечетных элементов #7
Цитата Сообщение от ann333 Посмотреть сообщение
easybudda, std::cout << .....
std-это что?
если не сложно с комментариями
Это пространство имен объявленное в заголовочном файле <iostream> , благодаря которому ты можешь использовать cout , cin , endl различные функции из библиотеки . Можно писать :
C++
1
2
#include <iostream>
using namespace std;
тогда дописывать везде std:: не придется , но вообще using namespace ...; писать не следует , это убивает сам смысл пространств имен.

Представим такую ситуацию:
C++
1
2
3
4
5
6
7
#include <wstring>
#include <boost/wstring>
 
using namespace std;
using namespace boost;
 
wstring wstr = L"123"; // Какая строка? std или boost? Компилятор тоже не знает.
Так что все пространства имен следует писать явно: std::string, std::vector и т.д.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2013, 02:43     Подсчет нечетных элементов
Еще ссылки по теме:

C++ Найти суммы четных элементов (элементов с четным номером) массива вещественных чисел A(22) и нечетных элементов
Найти сумму четных элементов, количество нечетных элементов и произведение элементов, кратным 3 C++
C++ Определить сумму указанных элементов, количество нечетных элементов и среднее арифметическое четных элементов массива

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
10.06.2013, 02:43     Подсчет нечетных элементов #8
Цитата Сообщение от ann333 Посмотреть сообщение
Вооьбще не понимаю здесь. если можно, самый самый простой способ. без векторов, различный замудренных кодов.
наверное стоит выложить код с вектором вложенным в вектор, с лямбда-функциями, ГСЧ из С++11 и все построенное на algorithm для сравнения. Мне кажется, вы проспали весь семестр, даже основы не учили.

Дополню ответ 2e1773ce насчет того, почему using namespace std - зло. Дело в том, что вы спихиваете ВСЕ функции в одну корзину - стандартное пространство имен. А потом при попытке написать скромненькую pow или max или sort вдруг оказывается, что вы совершенно нетривиальным для вас образом перегрузили стандартную функцию или компилятор неожиданно ведет себя не так, как вам хотелось бы и ваше творение, даже не проходит стадию компиляции.
Yandex
Объявления
10.06.2013, 02:43     Подсчет нечетных элементов
Ответ Создать тему
Опции темы

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