Форум программистов, компьютерный форум 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
Модератор
Эксперт CЭксперт С++
3924 / 1682 / 189
Регистрация: 20.02.2013
Сообщений: 4,742
Записей в блоге: 21
31.10.2015, 20:20     Подсчёт произведения нечётных элементов матрицы
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 минут
Но когда очередной новичок пишет такой код, где-то в мире плачет малыш иисус Бьярне Страуструп.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru