C/C++
Помогите решить задачу с двумерным массивом на C++
Найти номер столбца массива размером МхN, в котором находится наименьшее количество положительных элементов. Элементы вводятся с клавиатуры.
// если таких столбцов несколько,
// выводится первый из них
#include <iostream>
using namespace std;
int main()
{
int M,N;
do
{
cout << "Введите количество строк: ";
cin >> M;
}while(M < 1);
do
{
cout << "Введите количество столбцов: ";
cin >> N;
}while(N<1 || N == M);
int * * A;
A = new int*[M];
for(int x = 0; x < M; x++)
A[x] = new int[N];
for(int x = 0; x < M; x++)
{
for(int y = 0; y < N; y++)
{
cout << "A["<<x<<"]["<<y<<"] = ";
cin >> A[x][y];
}
}
int count, min, s;
for(int y = 0; y < N; y++)
{
count = 0;
for(int x = 0; x < M; x++)
{
if(A[x][y] > 0) count++;
}
if(y == 0)
{
min = count;
s = 0;
}
else
{
if(count < min)
{
min = count;
s = y;
}
}
}
// для наглядности сначала выведим массив на экран
for(int x = 0; x < M; x++)
{
for(int y = 0; y < N; y++)
{
cout << A[x][y] << '\t';
}
cout << endl;
}
cout << endl << s + 1 << " столбец имеет наименьшое количество положительных элементов." << endl;
if(A != (int**) nullptr)
{
for(int x = 0; x < M; x++)
{
if(A[x] != (int*) nullptr)
{
delete [] A[x];
A[x] = (int*) nullptr;
}
else return 1;
}
delete [] A;
A = (int**) nullptr;
}
return 0;
}
// выводится первый из них
#include <iostream>
using namespace std;
int main()
{
int M,N;
do
{
cout << "Введите количество строк: ";
cin >> M;
}while(M < 1);
do
{
cout << "Введите количество столбцов: ";
cin >> N;
}while(N<1 || N == M);
int * * A;
A = new int*[M];
for(int x = 0; x < M; x++)
A[x] = new int[N];
for(int x = 0; x < M; x++)
{
for(int y = 0; y < N; y++)
{
cout << "A["<<x<<"]["<<y<<"] = ";
cin >> A[x][y];
}
}
int count, min, s;
for(int y = 0; y < N; y++)
{
count = 0;
for(int x = 0; x < M; x++)
{
if(A[x][y] > 0) count++;
}
if(y == 0)
{
min = count;
s = 0;
}
else
{
if(count < min)
{
min = count;
s = y;
}
}
}
// для наглядности сначала выведим массив на экран
for(int x = 0; x < M; x++)
{
for(int y = 0; y < N; y++)
{
cout << A[x][y] << '\t';
}
cout << endl;
}
cout << endl << s + 1 << " столбец имеет наименьшое количество положительных элементов." << endl;
if(A != (int**) nullptr)
{
for(int x = 0; x < M; x++)
{
if(A[x] != (int*) nullptr)
{
delete [] A[x];
A[x] = (int*) nullptr;
}
else return 1;
}
delete [] A;
A = (int**) nullptr;
}
return 0;
}
Похожие вопросы
- Задача на c++ помогите решить без рандомного заполнения массива
- Помогите решить задачу по программированию на C++
- Помогите решить задачу на С++, используя статические массивы
- Помогите решить задачу по C++!
- Помогите решить задачу пожалуйста, в C++
- Как узнать длину двумерного массива в c++?
- Помогите решить задачу на C++
- Помогите решить задачу, c++, функции
- Помогите решить задачу C++
- Помогите решить задачу на C++.