Консультация № 158554
23.01.2009, 18:15
0.00 руб.
0 1 1
Здравствуйте! Помогите мне, пожалуйста, решить задачу:
Дана целочисленная матрица. Сосчитать сумму элементов в тех столбцах, которые не содержат отрицательных элементов

Обсуждение

Неизвестный
23.01.2009, 19:12
общий
это ответ
Здравствуйте, Immes!
Все комментарии в программе.

Приложение:
// Условие задачи
// Дана целочисленная матрица. Сосчитать сумму элементов в тех столбцах,
// которые не содержат отрицательных элементов

// Важно!!!
// Для корректного отображения русских букв в консоли
// зайдите в свойства консоли(нажав на пиктограмме консоли в левом верхнем углу окна)
// и установите шрифт Lucida Console

#include <iostream>
#include <iomanip>
#include <windows.h>
#ifdef max
#undef max
#endif

using namespace std;

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
// Ввод размерностей матрицы
cout<<"Введите количество строк матрицы:";
unsigned rows;
cin>>rows;
// Динамически размещаем матрицу
int** array=new int*[rows];
cout<<"Введите количество столбцов матрицы:";
unsigned cols;
cin>>cols;
// Ввод элементов матрицы построчно
for(unsigned i=0;i<rows;i++)
{
array[i]=new int[cols];
for(unsigned j=0;j<cols;j++)
{
cout<<"A["<<i+1<<"]["<<j+1<<"]=";
cin>>array[i][j];
}
}
// Печатаем матрицу
cout<<"Исходная матрица:"<<endl;
for(unsigned i=0;i<rows;i++)
{
for(unsigned j=0;j<cols;j++)cout<<setw(7)<<array[i][j]<<' ';
cout<<endl;
}
// Считаем сумму
int sum=0;
for(unsigned j=0;j<cols;j++)
{
bool flag=true; // true - если нет отрицательных в столбце
int sumincol=0; // сумма элементов в столбце
for(unsigned i=0;i<rows;i++)
{
if(array[i][j]<0)
{
flag=false;
break;
}
sumincol+=array[i][j];
}
sum+=sumincol*flag;
}
// Освобождаем память
for(unsigned i=0;i<rows;i++)delete []array[i];
delete []array;
// Печатаем результат
cout<<"Сумма элементов в столбцах не содержащих отрицательных значений:"<<sum<<endl;
system("PAUSE");
return 0;
}
Форма ответа