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

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

Войти
Регистрация
Восстановить пароль
 
vovka_lol
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 11
#1

Дана целочисленная прямоугольная матрица - C++

31.05.2016, 11:02. Просмотров 258. Ответов 1
Метки нет (Все метки)

Дана целочисленная прямоугольная матрица. Определить:
1) сумму элементов в тех строках, которые содержат хотя бы один отрицательный
элемент;
2) номера строк и столбцов всех седловых точек матрицы.
Примечание. Матрица А имеет седловую точку Аij, если Аij является минимальным
элементом в i-й строке и максимальным в j-м столбце.
что-то странное выдаёт на 1 условии.
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
#include <iostream>
using namespace std; int sum_n(int *a, int n,int m);
int n_pos(int **a, int n, int m);
int main(){
setlocale (0,"rus");
cout << "Введите кол-во строк и столбцов: ";
int n,m;
cin >> n >> m;
int **a=new int *[n];
cout <<"Введите элементы массива:\n";
int i;
for (i=0; i<n; i++){
a[i]=new int[m];
for (int j=0; j<m;j++)
cin >> a[i][j];
}
cout << "Количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент: " << sum_n(*a,n,m) << endl;
cout << "Номера строки и столбцов седловых точек матрицы: " << n_pos(a, n,m);
cin.get();
cin.get();
}
int sum_n(int *a, int n,int m)
{
int s = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
{
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
s++;
}
}
}
return  s;
}
int n_pos(int **a, int n, int m)
{
int s;
int min = 0;
int max = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
if (a[i][j] < min)
{
min = a[i][j];
for (int j = 0; j < n; j++)
for (int i = 0; i < m; i++)
{
if (a[j][i] > max)
{
max = a[j][i];
if (min = max)
s = min;
}
}
}
}
return s;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2016, 11:02     Дана целочисленная прямоугольная матрица
Посмотрите здесь:

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

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

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

Дана целочисленная прямоугольная матрица - C++
Доброго времени суток. Люди, от вас зависит идти мне в армию или нет. 4 месяца лежал в больнице, когда вернулся на учёбу ничего не знал....

дана целочисленная прямоугольная матрица - C++
определить: максимальное из чисел встречающихся в заданной матрице более одного раза Добавлено через 18 секунд помогите пожалуйста(

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

Дана целочисленная прямоугольная матрица - C++
Здравствуйте уважаемые программисты. Помогите пожалуйста с заданием. Дана целочисленная прямоугольная матрица. Определить: 1)...

Дана целочисленная прямоугольная матрица - C++
Дана целочисленная прямоугольная матрица. Упорядочить столбцы целочисленной прямоугольной матрицы по убыванию значений максимальных...

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

Дана целочисленная прямоугольная матрица - C++
Вообщем сделал 2\3 задания не могу разобраться с последним пунктом Вот собственно код #include &quot;stdafx.h&quot; #include &quot;iostream&quot; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
marat_miaki
106 / 95 / 35
Регистрация: 08.04.2013
Сообщений: 344
31.05.2016, 16:27     Дана целочисленная прямоугольная матрица #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
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
//----- объявление прототипов используемых функций-----------------
int** Create(int n,int m);           // создание матрицы n строк m столбцов
void Free(int** M,int n);             // освобождение матрицы
void Input(int** M,int n,int m);   // ввод матрицы вручную
void InputRand(int** M,int n,int m);  // ввод рандомно
void Print(int** M,int n,int m);     // вывод матрицы
//--------------------------------------------------------------------------
//void Work(int** M,int n,int m);    // обработка матрицы
int Work(int** M,int n,int m);    // обработка матрицы - сумма строки
bool OtrYN(int** M,int n,int m);    // обработка матрицы - есть ли отриц элемент
int MinMass(int** M,int n,int m);    // мин столбца массива
int MaxMass(int** M,int n,int m);    // максим. строки массива
 //--------------------------------------------------------------------------
 
//----------  main() -  точка входа в программу консольного приложения 
int main()
{
    setlocale(LC_ALL,"Rus");
    int n,m;
    cout<<"Количество строк матрицы:?";
    cin>>n;
    cout<<"Количество столбцов матрицы:?";
    cin>>m;
    int** A=Create(n,m);
    //Input(A,n,m);
    InputRand(A,n,m);
    Print(A,n,m);
    
    for (int i = 0; i < n; ++i) {
    if (OtrYN(A,i,m)) {
    
    cout << "Сумма строки где есть хоть 1 отр. элемент "<< i+1 <<" "<< (Work(A,i,m)) << endl;
    } //if
    }//for
    
    for (int i = 0; i < n; ++i) {
       cout << "Максимум строки "<< i+1 <<" "<< (MaxMass(A,i,m)) << endl;
    }//for
    for (int j = 0; j < m; ++j) {
        cout << "Минимум столбца "<< j+1 <<" "<< (MinMass(A,n,j)) << endl;
    }//for
    
    // дловая точка матрицы
    for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
       if ( (MinMass(A,n,j))==(MaxMass(A,i,m))) {
       cout << " Седловая точка " << "i- " << i <<" j- "<< j << endl;}
    }//for
    }
 
    cout << endl;
    //Print(A,n,m);
    Free(A,n);
    system("pause");
    return 0;
}
 
//----   описание функций -----------------------------------------
int** Create(int n,int m)
{
    int** M=new int*[n];
    for(int i=0;i<n;i++)
    {
        M[i]=new int[m];
    }
    return M;
}
//----------------------------
void Free(int** M,int n)
{
    for(int i=0;i<n;i++)
        delete[] M[i];
    delete[] M;
}
//----------------------------
void Input(int** M,int n,int m)
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cout<<"M["<<i<<"]["<<j<<"]=?";
            cin >> M[i][j];
        }
    
    }
}
//----------------------------
void InputRand(int** M,int n,int m)
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            M[i][j]=rand()%10;
        }
    
    }
}
//----------------------------
void Print(int** M,int n,int m)
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cout << setw(4) << M[i][j] ;
        }
        cout << endl;
    }
    cout << endl;
}
 
// Сумма строки массива  
int Work(int** M,int n,int m)
{
 int summ=0;
   for (int i=0; i < m; ++i)
        summ+=M[n][i];
 return summ;
}
// Есть ли отр элемент в строке 
bool OtrYN(int** M,int n,int m)
{
    for (int i=0; i < m; ++i)
        if (M[n][i]<0) return 1;
 return 0;
}
 
// Минимум столбца массива  
int MinMass(int** M,int n,int m)
{
 int min=M[0][m];
   for (int i=1; i < n; ++i)
        if (min > M[i][m]) min = M[i][m];
 return min;
}
// Максимум строки массива  
int MaxMass(int** M,int n,int m)
{
 int max=M[n][0];
   for (int i=1; i < m; ++i)
        if (max < M[n][i]) max = M[n][i];
 return max;
}
Ответ Создать тему
Опции темы

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