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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить эл из массива (list, stl) http://www.cyberforum.ru/cpp-beginners/thread150030.html
Помогите с задачий в одномерном массиве удалить, введенный с клавиатуры элемент, используя list и библ stl.
C++ Обработка строк 1. Составить программу для определения количества слов, введенных в тексте 2. Составить программу для определения самого длинного слова, в котором нет цифр http://www.cyberforum.ru/cpp-beginners/thread150029.html
C++ Сортировка слиянием
Нужен алгоритм сортировки массива слиянием. Массив из 1000 чисел, введенных рандомно. На visual c++ заранее большое спасибо.
C++ Подсчёт суммы и произведения элементов линейной таблицы
Привет! помогите пожалуйста составить две программы по обработке массивов. Первая заключается в том, чтобы составить программу для подсчёта суммы и произведения элементов линейной таблицы В, состоящей из 10 целых чисел, имеющих нечётные значения. А вторая - составить программу, которая вычисляет количество элементов одномерного массива Х, состоящего из 15 вещественных чисел, равных по...
C++ совершенные числа http://www.cyberforum.ru/cpp-beginners/thread149992.html
Здрасте,помогите организовать программу на Си,которая определяет является ли введённое с клавиатуры число совершенным. и надо расписать каждую строчку.что она обозначает и зачем она нужна...
C++ Узнать PID процесса Подскажите пожалуйста, как узнать PID процесса зная его имя (например explorer'a)!!! Пол интернета перерыл, функции все не рабочие. подробнее

Показать сообщение отдельно
gru74ik
Модератор
 Аватар для gru74ik
3508 / 1517 / 181
Регистрация: 20.02.2013
Сообщений: 4,378
Записей в блоге: 21
26.10.2015, 08:43     Подсчёт произведения нечётных элементов матрицы
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 минуту
Правда, я пока не придумал как генерировать случайные уникальные числа.
 
Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru