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

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

Восстановить пароль Регистрация
 
vovka_lol
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 11
31.05.2016, 11:02     Дана целочисленная прямоугольная матрица #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++ дана целочисленная прямоугольная матрица
C++ Дана целочисленная прямоугольная матрица
Дана целочисленная прямоугольная матрица C++
C++ Дана целочисленная прямоугольная матрица
C++ C++ Дана целочисленная прямоугольная матрица
C++ Дана целочисленная прямоугольная матрица
Дана целочисленная прямоугольная матрица C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
marat_miaki
97 / 86 / 31
Регистрация: 08.04.2013
Сообщений: 296
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;
}
Yandex
Объявления
31.05.2016, 16:27     Дана целочисленная прямоугольная матрица
Ответ Создать тему
Опции темы

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