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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
#1

Определить количество строк матрицы, которые не содержат ни одного нулевого элемента - C++

02.02.2014, 22:46. Просмотров 1827. Ответов 33
Метки нет (Все метки)

Пожалуйста помогите!
Данная прямоугольная целочисленная матрица. определить:
количество строк, которые не содержат ни одного нулевого элемента;
максимальное из чисел, встречающихся в заданной матрице более одного раза.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 22:46     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента
Посмотрите здесь:

Необходимо подсчитать количество строк матрицы, которые не содержат ни одного 0 элемента. - C++
Ребята, помогите пожалуйста разобраться с задачкой. Дана целочисленная матрица nxm. Необходимо подсчитать количество строк, которые не...

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

Определить количество строк матрицы не содержащих ни одного нулевого элемента - C++
Дана целочисленная прямоугольная матрица. Определить: количество строк, не содержащих ни одного нулевого элемента;

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

Определить количество строк матрицы, не содержащих ни одного нулевого элемента - C++
Дана целочисленная квадратная матрица. Определить: • количество строк, не содержащих ни одного нулевого элемента; • максимальное из...

Определить количество строк матрицы, не содержащих ни одного нулевого элемента - C++
Дана целочисленная прямоугольная матрица.Определить: 1)Количество строк ,не содержащих ни одного нулевого элемента. 2)...

Определить количество строк матрицы, в которых нет ни одного нулевого элемента - C++
Помагите если не сложно. Дана матрица размером МxN. Определить количество строк, в которых нет ни одного нулевого элемента.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mendow
1 / 1 / 0
Регистрация: 31.07.2013
Сообщений: 13
03.02.2014, 03:22     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #2
Цикл обхода строки с условием на нахождение не нулевого элемента ,если находиться элемент не равный нулю сразу переходить на новую строку ,если же дошли до конца строки счетчик строк увеличить на один.

Пока обходите массив. находить самый большой элемент и далее сравниваете его с встречающимися если находите заканчиваете цикл .
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
03.02.2014, 06:22     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Iryna_Light
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
int main()
{
    srand(time(0));
    const int H = 8, W = 15; 
    int M[H][W], counter = 0, max, result, row = 0;
    cout << "Matrix[H][W]";   
    cout << "\n\n";
    
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            M[i][j] = 100 - rand() % 200;
            cout << setw(4) << M[i][j];
            if(M[i][j] == 0)
                counter++;
        }
        cout << "\n\n";
        if(counter > 0)
            row++;
        counter = 0;
    }
    
    for(int loop = 0; loop <= (H * W); loop++)
    {
        for(int i = 0; i < H; i++)
        {
            for(int j = 0; j < W - 1; j++)
            {
                if(M[i][j] > M[i][j + 1])
                {
                    int temp = M[i][j];
                    M[i][j] = M[i][j + 1];
                    M[i][j + 1] = temp;
                }
            }
        }
        for(int i = 0; i < W; i++)
        {
            for(int j = 0; j < H - 1; j++)
            {
                if(M[j][i] > M[j][i + 1])
                {
                    int temp = M[j][i];
                    M[j][i] = M[j][i + 1];
                    M[j][i + 1] = temp;
                }
            }
        }
    }
    
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            max = M[i][j];
            for(int i = 0; i < H; i++)
            {
                for(int j = 0; j < W; j++)
                {
                    if(max == M[i][j])
                    {
                        counter++;
                    }
                    if(counter > 1)
                    {
                        result = max;
                        break;
                    }
                }
            }          
            counter = 0;
        }
    }
    
    cout << "\nRows: " << H - row <<
            "\nMax element: " << result << "\n\n";
    
    system("pause");
    return 0;
}


Добавлено через 2 часа 28 минут
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
int main()
{
    srand(time(0));
    const int H = 8, W = 15; 
    int M[H][W], counter = 0, max, result, row = 0;
    cout << "Matrix[H][W]";   
    cout << "\n\n";
    
    //Находим строки с нулевыми элементами
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            M[i][j] = 100 - rand() % 200;
            cout << setw(4) << M[i][j];
            if(M[i][j] == 0)
                counter++;
        }
        cout << "\n\n";
        if(counter > 0)
            row++;
        counter = 0;
    }
    
    //Сортируем массив
    for(int loop = 0; loop <= (H * W); loop++)
    {
        for(int i = 0; i < H; i++)
        {
            for(int j = 0; j < W - 1; j++)
            {
                if(M[i][j] < M[i][j + 1])
                {
                    int temp = M[i][j];
                    M[i][j] = M[i][j + 1];
                    M[i][j + 1] = temp;
                }
            }
        }
        for(int i = 0; i < W; i++)
        {
            for(int j = 0; j < H - 1; j++)
            {
                if(M[j][i] < M[j][i + 1])
                {
                    int temp = M[j][i];
                    M[j][i] = M[j][i + 1];
                    M[j][i + 1] = temp;
                }
            }
        }
    }
    
    result = M[H - 1][W - 1];
    
    //Находим максимальный повторяющийся элемент
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            max = M[i][j];
            for(int i = 0; i < H; i++)
            {
                for(int j = 0; j < W; j++)
                {
                    if(max == M[i][j])
                        counter++;
                }
            }
            if(counter > 1 && result < max)
                result = max;
            counter = 0;
        }
    }
    
    cout << "\nRows: " << H - row <<
            "\nMax element: " << result << "\n\n";
    
    system("pause");
    return 0;
}

Второй вариант правильный.
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 08:29     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #4
Iryna_Light, GuGo1991, Вариант в 57 строк:
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<conio.h>
#include<iostream>
#include<iomanip>
#include<time.h>
#include<Windows.h>
using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    int a, b;
    cout << "Введите размеры матрицы: ";
    cin >> a >> b;
    int **M = new int*[a];
    for (int i(0); i < a; i++)
        M[i] = new int[b];
    for (int i(0); i < a; i++){
        for (int j(0); j < b; j++){
            M[i][j] = 99 - rand() % 198;
            cout << setw(5) << M[i][j];
        }
        cout << endl;
    }
    int Zero(0), Count(a), Max, MaxCount(0), Max2(0), C(0);
    
    for (int i(0); i < a; i++){
        for (int j(0); j < b; j++){
            if (M[i][j] == 0)
                Zero++;
            if (C == 0){
                Max = M[i][j];
                C++;
            }
            if (M[i][j] == Max)
                MaxCount++;
            if (MaxCount >= 2){
                Max2 = Max;
                MaxCount = 0;
            }
            if (M[i][j] > Max)
                Max = M[i][j];
        }
        if (Zero != 0){
            Zero = 0;
            Count--;
        }
    }
    cout << endl << "Количество строк, которые не содержат ни одного нулевого элемента: " << Count;
    if (Max2 == 0) cout << "Нет чисел, встречающихся более одного раза!";
    else cout << endl << "Максимальное из чисел, встречающихся в заданной матрице более одного раза: " << Max2;
    for (int i(0); i < a; i++)
        delete[] M[i];
    delete[] M;
    cout << "\n\nДля выхода нажмите любую клавишу...";
    _getch();
    return 0;
}
Ev[G]eN
Эксперт С++
5096 / 1534 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
03.02.2014, 12:15     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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 <algorithm>
#include <iterator>
#include <iostream>
#include <iomanip>
#include <random>
#include <vector>
 
int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution <> distribution(-25, 25);
 
    size_t rowsCount;
    std::cout << "N: ";
    std::cin >> rowsCount;
 
    size_t colsCount;
    std::cout << "M: ";
    std::cin >> colsCount;
 
    size_t rowsWithoutZero = 0;
    std::vector <std::vector <int>> matrix(rowsCount, std::vector <int> (colsCount, 0));
    std::cout << "Matrix: " << std::endl;
    for (auto &currentMatrixRow : matrix) {
        for (auto &currentRowElement : currentMatrixRow) {
            std::cout << std::setw(5) << (currentRowElement = distribution(generator));
        }
        rowsWithoutZero += (!std::count(currentMatrixRow.begin(), currentMatrixRow.end(), 0));
        std::cout << std::endl;
    }
    std::cout << "Rows without zero elements: " << rowsWithoutZero << std::endl;
    
    bool isFind = false;
    int resultMaximal = 0;
    size_t currentRowIndex = 0;
    while (!isFind) {
        size_t currentMaximalCounter = 0;
        auto currentMaximal = std::max_element(matrix.at(currentRowIndex).begin(), matrix.at(currentRowIndex).end());
        for (size_t i = 0; i < rowsCount; i++) {
            currentMaximalCounter += std::count(matrix.at(i).begin(), matrix.at(i).end(), *currentMaximal);
        }
        if (currentMaximalCounter > 1) {
            isFind = true;
            resultMaximal = *currentMaximal;
        } else {
            if (matrix.at(currentRowIndex).size() != 0) {
                matrix.at(currentRowIndex).erase(currentMaximal);
            } else {
                currentRowIndex++;
            }
        }
    }
    std::cout << "Maximal, that repeat more than 1 time: " << resultMaximal << std::endl;
    
    std::system("pause");
    return 0;
}
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
03.02.2014, 16:30     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #6
Xopecc, ваш код пропустит максимальный отрицательный элемент, если такой имеется.
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 17:01     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #7
GuGo1991, проверял достаточное кол-во раз, все правильно выводится
Ev[G]eN
Эксперт С++
5096 / 1534 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
03.02.2014, 17:07     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #8
Xopecc, делать подобные "предположения", в принципе неправильно..
Цитата Сообщение от Xopecc Посмотреть сообщение
C++
1
Max(-200)
откуда эти -200? с головы?
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 17:10     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #9
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
Xopecc, делать подобные "предположения", в принципе неправильно..

откуда эти -200? с головы?
-200 там не нужно; я в начале по другому принципу считал максимальное из чисел, встречающихся в заданной матрице более одного раза. Потом нашел более простой способ, а эти -200 забыл убрать, сейчас поправлю код в посте выше
ну, поправил если можешь убери -200 из поста с кодом
Ev[G]eN
Эксперт С++
5096 / 1534 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
03.02.2014, 17:12     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #10
Цитата Сообщение от Xopecc Посмотреть сообщение
если можешь убери -200 из поста с кодом
отредактировал
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 17:18     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #11
GuGo1991, стоп, а зачем вообще нам нужен максимальный отрицательный элемент?
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
03.02.2014, 17:26     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #12
Xopecc, ну а вдруг положительных повторяющихся нет или же все элементы отрицательные и
имеется повторяющийся отрицательный
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 250
03.02.2014, 17:34     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #13
GuGo1991, Ах да, в ручную проверил, например, если есть матрица 2х2(-3;-2;-3;0), то он считал максимальным повторяющимся элементом -2; исправил, вот код(добавил сравнивание по модулю):
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<conio.h>
#include<iostream>
#include<iomanip>
#include<time.h>
#include<Windows.h>
using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    int a, b;
    cout << "Введите размеры матрицы: ";
    cin >> a >> b;
    int **M = new int*[a];
    for (int i(0); i < a; i++)
        M[i] = new int[b];
    for (int i(0); i < a; i++){
        for (int j(0); j < b; j++){
            M[i][j] = 99 - rand() % 198;
            cout << setw(5) << M[i][j];
        }
        cout << endl;
    }
    int Zero(0), Count(a), Max(0), MaxCount(0), Max2(0), C(0);
    
    for (int i(0); i < a; i++){
        for (int j(0); j < b; j++){
            if (M[i][j] == 0)
                Zero++;
            if (C == 0){
                Max = M[i][j];
                C++;
            }
            if (M[i][j] == Max)
                MaxCount++;
            if (MaxCount >= 2){
                Max2 = Max;
                MaxCount = 0;
            }
            if (abs(M[i][j]) > abs(Max))
                Max = M[i][j];
        }
        if (Zero != 0){
            Zero = 0;
            Count--;
        }
    }
    cout << endl << "Количество строк, которые не содержат ни одного нулевого элемента: " << Count << endl;
    if (Max2 == 0) cout << "Нет чисел, встречающихся более одного раза!";
    else cout << endl << "Максимальное из чисел, встречающихся в заданной матрице более одного раза: " << Max2;
    for (int i(0); i < a; i++)
        delete[] M[i];
    delete[] M;
    cout << "\n\nДля выхода нажмите любую клавишу...";
    _getch();
    return 0;
}
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
04.02.2014, 23:24  [ТС]     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #14
Xopecc, а можно подробнее строки30-43. спасибо

Добавлено через 5 минут
GuGo1991, а без сортировки никак? и это сортировка по убывающей?
немного не понимаю сортировки и нахождение макс. элемента
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
05.02.2014, 00:27     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #15
Iryna_Light, заодно заменил массив на динамический и добавил проверку.
Если что не ясно пишите.
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
int main()
{
    srand(time(0)); 
    int H, W, counter = 0, max, min, 
        min_counter = 0, result, row = 0;
    cout << "Matrix[H][W]\n";
    cout << "Enter H: "; cin >> H;
    cout << "Enter W: "; cin >> W;
    cout << "\n\n";
    int** M = new int*[H];
    for(int i = 0; i < H; i++)
        M[i] = new int[W];
    
    //Находим строки с нулевыми элементами
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            M[i][j] = 100 - rand() % 200;
            cout << setw(4) << M[i][j];
            if(M[i][j] == 0)
                counter++;
        }
        cout << "\n\n";
        if(counter > 0)
            row++;
        counter = 0;
    }
    
    min = M[0][0];
    
    //Находим минимальный элемент
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            if(M[i][j] < min)
            {
                min = M[i][j];
            }
        }
    }
    
    //min_counter понадобится в дальнейшем
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            if(min == M[i][j])
                min_counter++;
        }
    }
    
    result = min;
    
    //Находим максимальный повторяющийся элемент
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            max = M[i][j];
            for(int i = 0; i < H; i++)
            {
                for(int j = 0; j < W; j++)
                {
                    if(max == M[i][j])
                        counter++;
                }
            }
            if(counter > 1 && result < max)
                result = max;
            counter = 0;
        }
    }
    
    cout << "\nRows: " << H - row;
    cout << "\nMax element: ";
    
    //Если значение result не изменилось и min_counter равен 1,
    //то есть значение min не повторяется, значит максимального
    //повторяющегося элемента нет. Иначе выводим result.
    (result == min && min_counter == 1)? cout << "No such element!\n"
                                       : cout << result << endl;
     
    for(int i = 0; i < H; i++)
    {
        delete [] M[i];
    }      
    
    delete [] M;
    
    system("pause");
    return 0;
}
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
05.02.2014, 22:56  [ТС]     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #16
GuGo1991,
а если в строке будет два нулевых элементы, то что будет тогда считаться две строки вместо одной?
и что-то не понимаю отыскания макс. элем.
причем например min_counter
любой элемент может быть больше за мин.элем.
и при выполнении вывело НЕ макс. а мин. элемент.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
05.02.2014, 23:33     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #17
Цитата Сообщение от Iryna_Light Посмотреть сообщение
а если в строке будет два нулевых элементы, то что будет тогда считаться две строки вместо одной?
Нет, одна.
Цитата Сообщение от Iryna_Light Посмотреть сообщение
и что-то не понимаю отыскания макс. элем.
Строки 62 - 79. Берём первый элемент матрицы (с индексами [0][0]). Проходим по всей матрице и проверяем
имеется ли такой же элемент. Один раз он точно будет, столкнется сам с собой, поэтому проверяем
значение counter больше 1 и сравниваем значение result с этим элементом (result всегда будет меньше или равно
потому что мы ему присвоили значение min до начала цикла, это необходимо чтобы не потерять повторяющиеся отрицательные элементы,
если нет положительных).
Цитата Сообщение от Iryna_Light Посмотреть сообщение
причем например min_counter
min_counter проверяет сколько минимальных элементов имеется. В случае если нет повторяющихся
максимальных элементов (положительных и отрицательных) и минимальный элемент один, тогда повторяющихся
элементов нет. А если минимальных элементов больше одного, программа выведет его.
Грубо говоря, это страховка.
Цитата Сообщение от Iryna_Light Посмотреть сообщение
и при выполнении вывело НЕ макс. а мин. элемент.
Скопируйте вывод программы, сомневаюсь в ошибке
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
09.02.2014, 20:27  [ТС]     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #18
GuGo1991, Максимальное из чисел, встречающихся в заданной матрице более одного раза, неправильно определено. Правильный ответ должен быть 100
Миниатюры
Определить количество строк матрицы, которые не содержат ни одного нулевого элемента  
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.02.2014, 21:35     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #19
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
int main()
{
    srand(time(0)); 
    int H, W, counter = 0, max, min, 
        min_counter = 0, result, row = 0;
    cout << "Matrix[H][W]\n";
    cout << "Enter H: "; cin >> H;
    cout << "Enter W: "; cin >> W;
    cout << "\n\n";
    int** M = new int*[H];
    for(int i = 0; i < H; i++)
        M[i] = new int[W];
    
    //Находим строки с нулевыми элементами
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            M[i][j] = 100 - rand() % 200;
            cout << setw(4) << M[i][j];
            if(M[i][j] == 0)
                counter++;
        }
        cout << "\n\n";
        if(counter > 0)
            row++;
        counter = 0;
    }
    
    min = M[0][0];
    
    //Находим минимальный элемент
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            if(M[i][j] < min)
            {
                min = M[i][j];
            }
        }
    }
    
    //min_counter понадобится в дальнейшем
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            if(min == M[i][j])
                min_counter++;
        }
    }
    
    result = min;
    
    //Находим максимальный повторяющийся элемент
    for(int i = 0; i < H; i++)
    {
        for(int j = 0; j < W; j++)
        {
            max = M[i][j];
            for(int i = 0; i < H; i++)
            {
                for(int j = 0; j < W; j++)
                {
                    if(max == M[i][j])
                        counter++;
                }
            }
            if(counter > 1 && result < max)
                result = max;
            counter = 0;
        }
    }
    
    cout << "\nRows: " << H - row;
    cout << "\nMax element: ";
    
    //Если значение result не изменилось и min_counter равен 1,
    //то есть значение min не повторяется, значит максимального
    //повторяющегося элемента нет. Иначе выводим result.
    (result == min && min_counter == 1)? cout << "No such element!\n"
                                       : cout << result << endl;
     
    for(int i = 0; i < H; i++)
    {
        delete [] M[i];
    }      
    
    delete [] M;
    
    system("pause");
    return 0;
}


Iryna_Light, точно этот код компилируете? У меня работает корректно, не знаю чем помочь...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2014, 22:39     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента
Еще ссылки по теме:

Определить количество строк, не содержащих ни одного нулевого элемента - C++
#include &lt;iostream&gt; using namespace std; void main() { setlocale(LC_ALL, &quot;Russian&quot;); int mass=256;// обьявили двумерный...

Определить количество строк, не содержащих ни одного нулевого элемента - C++
Помогите написать программу,предмет просто не профильный Написать программу в соответствии с вариантом, выделив под массив динамически...

Определить количество строк, не содержащих ни одного нулевого элемента - C++
Заполнить целочисленный двухмерный массив размера NN случайными числами в диапазоне от -18 до 20 . Определить количество строк, не...

Определить количество строк не содержащих ни одного нулевого элемента - C++
создать в динамической памяти двумерный массив целых чисел. Определить количество строк не содержащих ни одного нулевого элемента

Определить: количество строк, не содержащих ни одного нулевого элемента; - C++
Составить функцию Run которая позволит выполнить следующие действия с двухмерными массивами (если задачу решить нельзя, то сообщит об...


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

Или воспользуйтесь поиском по форуму:
Iryna_Light
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 41
09.02.2014, 22:39  [ТС]     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента #20
GuGo1991, так же он
Yandex
Объявления
09.02.2014, 22:39     Определить количество строк матрицы, которые не содержат ни одного нулевого элемента
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru