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

Подсчёт произведения нечётных элементов матрицы - C++

Восстановить пароль Регистрация
 
freww
Сообщений: n/a
28.06.2010, 12:15     Подсчёт произведения нечётных элементов матрицы #1
помогите еще тут:

1. Составить программу для подсчёта произведения нечётных элементов двумерной матрицы В размерности m×n.

2. Задан двумерный массив С, состоящий из m строк и n столбцов. Составить программу, которая все элементы до максимального элемента заменяет нулями, а после максимального на единицы. Учесть, что значения в массиве не повторяются.

3. Задана квадратная матрица. Переставить строку с максимальным элементом со строкой с заданным номером m
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2010, 12:15     Подсчёт произведения нечётных элементов матрицы
Посмотрите здесь:

C++ Подсчёт суммы и произведения элементов линейной таблицы
C++ Подсчёт количества нечётных элементов в каждом столбце матрицы
Составить программу нахождения произведения нечётных чисел из [a;b] C++
Дана матрица. Вычислите сумму и произведение нечётных отрицательных элементов матрицы, удовлетворяющих условию C++
C++ Найти количество элементов матрицы, не превосходящих по модулю 5; найти сумму нечётных элементов 3-й строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mamedovvms
2913 / 834 / 93
Регистрация: 30.04.2009
Сообщений: 2,613
28.06.2010, 12:21     Подсчёт произведения нечётных элементов матрицы #2
C++
1
2
3
4
5
6
7
1)
pr:=1;
for (int i=0;i<m;i++)
{
   for (int j=0;j<n;j++)
     if (odd(b[i][j])) {pr*=b[i][j];}
}
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
28.06.2010, 13:12     Подсчёт произведения нечётных элементов матрицы #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
3:
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
#include <iostream>
#include <iomanip>
 
int main()
{
    int COLS=5;
    int ROWS=5;
 
    int **mas = new int*[ROWS];
    for (int i=0; i<ROWS; i++)
    mas[i] = new int[COLS];
 
    srand(time(NULL));
    for (int i=0; i<ROWS; ++i){
        for (int j=0; j<COLS; ++j){
            mas[i][j]=rand()%50;
            std::cout<<std::setw(4)<<mas[i][j];
        }
        std::cout<<std::endl;
    }
 
    int max=mas[0][0];
    int number_st=0;
    for (int i=0; i<ROWS; ++i){
        for (int j=0; j<COLS; ++j){
            if (mas[i][j]>max){
                max=mas[i][j];
                number_st=i;
            }
        }
    }
    std::cout<<"Max element="<<max;
 
    int m=0;
    std::cout<<"\n enter m: ";
    std::cin>>m;
    if (m>=ROWS){
        std::cout<<"\n error: out of range";
        exit(1);
    }
 
    int tmp=0;
    for (int j=0; j<COLS; ++j){
        tmp=mas[m][j];
        mas[m][j]=mas[number_st][j];
        mas[number_st][j]=tmp;
    }
 
    std::cout<<"\n massiv after: "<<std::endl;
    for (int i=0; i<ROWS; ++i){
            for (int j=0; j<COLS; ++j)
                std::cout<<std::setw(4)<<mas[i][j];
            std::cout<<std::endl;
    }
 
    return EXIT_SUCCESS;
}
G1m3rr
15 / 14 / 1
Регистрация: 06.03.2010
Сообщений: 30
28.06.2010, 16:43     Подсчёт произведения нечётных элементов матрицы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
75
76
77
78
79
#include "stdafx.h"
#include <iostream>
using namespace std;
/*
Задан двумерный массив С, состоящий из m строк и n столбцов. Составить программу, 
которая все элементы до максимального элемента заменяет нулями, 
а после максимального на единицы. 
Учесть, что значения в массиве не повторяются.
*/
int main ()
{
    int n,m,k,ki=0,max=0,maxi=0,maxj=0;
    bool flag=false,flag1=true,flag2=true;
    cout<<"Vvedite razmer matrici(nxm): ";
    cin>>n>>m;
    k=n*m;
    int *chk=new int[k];
    int **mas = new int*[m];
    for (int i=0; i<m; i++)
        mas[i] = new int[n];
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        {
            cout<<"vvedite element mas["<<i<<"]["<<j<<"]: ";
            cin>>mas[i][j];
            for(int l=0;l<ki;l++)
                if(chk[l]==mas[i][j])
                    flag=true;
            if(!flag)
            {   
                chk[ki]=mas[i][j];
                if(mas[i][j]>max)
                {
                    max=mas[i][j];
                    maxi=i;
                    maxj=j;
                }
                ki++;
            }
            else
            {
                flag=false;
                cout<<"ERROR:Takoe znachenie yzhe est!"<<endl;
                j--;
            }
        }
    cout<<endl<<endl<<"*****************************"<<endl;
    if(maxi!=0 || maxj!=0)
    {
        for(int ii=0;ii<maxi ||(flag1&&ii<n) ;ii++)
        {
            for(int jj=0;jj<maxj || (flag2&&jj<m);jj++)
                mas[ii][jj]=0;
            if(ii==maxi)
                flag1=false;
            if((ii+1)==maxi)
                flag2=false;
        }
    }   
    maxj++;
    flag1=true;
    for(;maxi<n;maxi++)
    {
        for(;maxj<m && flag1;maxj++)
        {
            mas[maxi][maxj]=1;
            if((maxj+1)==m)
            {
                flag1=false;
            }
        }
        maxj=0;
        flag1=true;
    }
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            cout<<"Mas["<<i<<"]["<<j<<"]="<<mas[i][j]<<endl;
    return 0;
}
Vinori
3 / 3 / 1
Регистрация: 27.09.2015
Сообщений: 42
25.10.2015, 22:59     Подсчёт произведения нечётных элементов матрицы #5
Да это не самый легкий код! Слишком сложно понять.
gru74ik
Модератор
 Аватар для gru74ik
3131 / 1357 / 168
Регистрация: 20.02.2013
Сообщений: 3,877
Записей в блоге: 18
25.10.2015, 23:09     Подсчёт произведения нечётных элементов матрицы #6
Vinori, тема 2010 года
Vinori
3 / 3 / 1
Регистрация: 27.09.2015
Сообщений: 42
25.10.2015, 23:46     Подсчёт произведения нечётных элементов матрицы #7
Ну а что я могу сделать если у меня эти все 3 задачи , а я с 2 не могу разобраться

Добавлено через 35 минут
Ребят кто может сделать легче 2 задание ? Помогите плизз
gru74ik
Модератор
 Аватар для gru74ik
3131 / 1357 / 168
Регистрация: 20.02.2013
Сообщений: 3,877
Записей в блоге: 18
26.10.2015, 06:21     Подсчёт произведения нечётных элементов матрицы #8
Vinori, элементы матрицы представлены числами какого типа? Целые числа? Вещественные числа?
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,210
Завершенные тесты: 1
26.10.2015, 07:20     Подсчёт произведения нечётных элементов матрицы #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
using namespace std;
/*
Задан двумерный массив mas, состоящий из N строк и M столбцов. Составить программу, 
которая все элементы до максимального элемента заменяет нулями, 
а после максимального на единицы. 
Учесть, что значения в массиве не повторяются.
*/
int main ()
{
    const int N=3,M=3;
    int mas[N][M]={ {1,2,3},{99,4,5},{6,7,8} };
    int* pm=&mas[0][0]; // начало массива mas
    int mx=0;
    for (int i=0; i<M*N; i++) // учитываем, что элементы идут подряд строка за строкой
        mx=pm[i]>pm[mx]?i:mx;
    for(int i=0;i<mx;i++)
        pm[i]=0;
    for(int i=mx+1;i<M*N;i++)
        pm[i]=1;
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<M;j++)
            cout<<mas[i][j]<<'\t';
        cout<<endl;
    }
    system("pause");
    return 0;
}
Обратите внимание, что для динамических массивов такой способ не пройдет, т.к. в них строки не обязаны располагаться непрерывно друг за другом.
Vinori
3 / 3 / 1
Регистрация: 27.09.2015
Сообщений: 42
26.10.2015, 07:30     Подсчёт произведения нечётных элементов матрицы #10
Спасибо все понятно!
gru74ik
Модератор
 Аватар для gru74ik
3131 / 1357 / 168
Регистрация: 20.02.2013
Сообщений: 3,877
Записей в блоге: 18
26.10.2015, 08:43     Подсчёт произведения нечётных элементов матрицы #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Vinori, вот вариант для динамических массивов:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// 1) Составить программу для подсчёта произведения нечётных элементов
//    двумерной матрицы В размерности mГ—n.
// 2) Задан двумерный массив С, состоящий из m строк и n столбцов.
//    Составить программу, которая все элементы до максимального элемента
//    заменяет нулями, а после максимального на единицы. Учесть, что значения
//    в массиве не повторяются.
// 3) Задана квадратная матрица. Переставить строку с максимальным элементом
//    со строкой с заданным номером m
 
#include <iostream>
#include <random>
#include <ctime>
 
typedef int Item;
 
struct Indexes
{
    int row_index = 0;
    int col_index = 0;
};
 
void fill_rand(Item ** matrix, const int row, const int col, Item fromNum, Item toNum);
void reset_matrix(Item ** matrix, const int row, const int col, const Indexes & ind);
Indexes find_max(Item ** const matrix, const int row, const int col);
void show_matrix(Item ** const matrix, const int row, const int col);
 
int main()
{
    std::cout << "Please enter the size of the matrix.\n"
                 "Enter the number of the rows: ";
    int m;
    std::cin >> m;
 
    std::cout << "Enter the number of the columns: ";
    int n;
    std::cin >> n;
 
    Item ** C = new Item * [m];
    for (int i = 0; i < m; ++i)
        C[i] = new Item[n];
 
    fill_rand(C, m, n, 10, 99);
    show_matrix(C, m, n);
    reset_matrix(C, m, n, find_max(C, m, n));
    show_matrix(C, m, n);
 
    for (int i = 0; i < m; ++i)
        delete [] C[i];
    delete [] C;
 
    return 0;
}
 
void fill_rand(Item ** matrix, const int row, const int col, Item fromNum, Item toNum)
{
    std::mt19937 gen(time(0));
    std::uniform_int_distribution<int> uid(fromNum, toNum);
    for (int i = 0; i < row; ++i)
        for (int j = 0; j < col; ++j)
            matrix[i][j] = uid(gen);
}
 
void reset_matrix(Item ** matrix, const int row, const int col, const Indexes & ind)
{
    for (int i = 0; i < row; ++i)
        for (int j = 0; j < col; ++j)
        {
            if (i < ind.row_index)
            {
                matrix[i][j] = 0;
            }
            else if (i == ind.row_index)
            {
                if (j < ind.col_index)
                    matrix[i][j] = 0;
                else if (j > ind.col_index)
                    matrix[i][j] = 1;
            }
            else if (i > ind.row_index)
                matrix[i][j] = 1;
 
        }
}
 
Indexes find_max(Item ** const matrix, const int row, const int col)
{
    Indexes ind;
    Item max_value = matrix[0][0];
    for (int i = 0; i < row; ++i)
        for (int j = 0; j < col; ++j)
            if (max_value < matrix[i][j])
            {
                max_value = matrix[i][j];
                ind.row_index = i;
                ind.col_index = j;
            }
    return ind;
}
 
void show_matrix(Item ** const matrix, const int row, const int col)
{
    std::cout << "\n";
    for (int i = 0; i < row; ++i)
    {
        for (int j = 0; j < col; ++j)
            std::cout << matrix[i][j] << "\t";
        std::cout << "\n";
    }
}
Добавлено через 1 минуту
Правда, я пока не придумал как генерировать случайные уникальные числа.
Vinori
3 / 3 / 1
Регистрация: 27.09.2015
Сообщений: 42
26.10.2015, 08:49     Подсчёт произведения нечётных элементов матрицы #12
спс конечно но я еще пока до функция не дошел( я думаю что это функции) только неделю как изучать начал С++
gru74ik
Модератор
 Аватар для gru74ik
3131 / 1357 / 168
Регистрация: 20.02.2013
Сообщений: 3,877
Записей в блоге: 18
26.10.2015, 09:05     Подсчёт произведения нечётных элементов матрицы #13
Vinori, функции, да.
gru74ik
Модератор
 Аватар для gru74ik
3131 / 1357 / 168
Регистрация: 20.02.2013
Сообщений: 3,877
Записей в блоге: 18
31.10.2015, 20:20     Подсчёт произведения нечётных элементов матрицы #14
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Vinori, вот вариант только с одной функцией:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*3.    Задан двумерный массив  С, состоящий из m строк и n столбцов.
Составить программу, которая все элементы до максимального элемента заменяет  нулями,
а после максимального на единицы.
Учесть, что значения в массиве не повторяются.*/
 
#include <iostream>     // для объектов cin и cout (ввод-вывод)
#include <cstdlib>      // для функций srand(), rand() и system()
#include <ctime>        // для функции time()
 
using std::cout;
using std::endl;
 
bool is_repeat(int ** mas, int row, int col, int digit)
{
    bool found_first_time = true;
    bool result = false;
    for (int i = 0; i < row; i++)
        for (int j = 0; j < col; j++)
            if (mas[i][j] == digit)
            {
                if (found_first_time)
                    found_first_time = false;
                else
                    result = true;
            }
 
    return result;
}
 
int main()
{
    const int N = 7;
    const int M = 7;
 
    int ** C = new int * [N];
    for (int i = 0; i < N; ++i)
        C[i] = new int[M];
 
    //рандомное заполнение массива
    srand((unsigned)time(0));
    for (int i = 0;i<N;i++)
        for (int j = 0;j<M;j++)
            C[i][j] = 1 + rand()%100;
 
    //вывод массива
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
            cout << C[i][j] << '\t';
        cout << endl;
    }
 
    //проверка на повторение значений:
    for (int i = 0;i<N;i++)
    {
        for (int j = 0;j<M;j++)
        {
            while (is_repeat(C, N, M, C[i][j]))
                C[i][j] = 1 + rand()%100;
        }
    }
    cout << "\n\n";
 
    //вывод массива
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
            cout << C[i][j] << '\t';
        cout << endl;
    }
 
    cout << "\n****************************************\n\n";
 
    //нахождение элемента с максимальным значением:
    int row_index = 0;
    int col_index = 0;
 
    int max_value = C[0][0];
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < M; ++j)
            if (max_value < C[i][j])
            {
                max_value = C[i][j];
                row_index = i;
                col_index = j;
            }
 
    //заполняем перед максимальным элементом нулями, а после - единицами:
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < M; ++j)
        {
            if (i < row_index)
            {
                C[i][j] = 0;
            }
            else if (i == row_index)
            {
                if (j < col_index)
                    C[i][j] = 0;
                else if (j > col_index)
                    C[i][j] = 1;
            }
            else if (i > row_index)
                C[i][j] = 1;
 
        }
 
    //вывод массива
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
            cout << C[i][j] << '\t';
        cout << endl;
    }
 
 
    for (int i = 0; i < N; ++i)
        delete [] C[i];
    delete [] C;
 
    system("pause");
 
    return 0;
}
Добавлено через 13 минут
Но когда очередной новичок пишет такой код, где-то в мире плачет малыш иисус Бьярне Страуструп.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2015, 20:21     Подсчёт произведения нечётных элементов матрицы
Еще ссылки по теме:

C++ Вычислить произведения элементов заданной матрицы
C++ Вычислить произведения элементов каждого столбца матрицы
Задача на матрицы. Найти суммы элементов всех четных и нечётных строк и столбцов C++

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

Или воспользуйтесь поиском по форуму:
Vinori
3 / 3 / 1
Регистрация: 27.09.2015
Сообщений: 42
31.10.2015, 20:21     Подсчёт произведения нечётных элементов матрицы #15
ахахаха спс
Yandex
Объявления
31.10.2015, 20:21     Подсчёт произведения нечётных элементов матрицы
Ответ Создать тему
Опции темы

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