Задача: Кв. матрица (динамич. двумерный массив), найти послед.(вектор)

  • Автор темы Gantz
  • Дата начала

DarkKnight

Well-known member
01.08.2010
653
0
#2
Дана квадратная матрица A[i,j]. Получить последовательность числе bi, i = 1,...n, равных произведению отрицательных элементов строк.
C++:
/*
Дана квадратная матрица A[i,j]. 
Получить последовательность числе bi, i = 1,...n, равных произведению отрицательных элементов строк.
*/
/*
codeby.net
Autor: DarkKnight125 (Denis Goncharov)
*/
#include <iostream>
#include <time.h>

using namespace std;

void main(void)
{
setlocale(LC_ALL,".1251"); //Установим локаль в 1251-кодовую страницу
srand(time(NULL)); // Инициализация генератора случ. величины
int **Arr; //Наша матрица
int Size; //Размер квадратной матрицы
int P; //Произведение отриц. членов
int *b; //Массив произведения отрицательных элементов строк (для каждой строки)

cout << "Введите размер матрицы Size = ";
cin >> Size; //Введем размер кв. матрицы
Arr = new int*[Size]; //Выделим память под строки
b = new int[Size]; //Выделим память под последовательность чисел (результат)

//Обойдем все строки
for (int i = 0; i< Size; i++)
{
P = 1; //Первоначально присвоим произведению 1
Arr[i] = new int[Size]; //Выделим память под столбцы
for (int j = 0; j< Size; j++) //Обойдем столбцы для текущей строки
{
Arr[i][j] = rand()%100 * (rand()%2?1:-1); //Сгенерируем случ. величину = [-99..99]
cout << Arr[i][j] << " "; //Выведим на экран
if (Arr[i][j] < 0) // Если элемент отрицателен
P *= Arr[i][j]; //Увеличим произведение
}
b[i] = P; //Запишим в последовательность (произведение отриц. элементов тек. строки)
cout << endl;
cout << "Произведение отрицательных элементов текущей строки = " << b[i] << endl;
}	

//Вывод результата
cout << endl << "Результат : " << endl;
cout << "b = ";
//Обойдем весь массив последовательности и выведим на экран
for (int i = 0; i< Size; i++)
cout << b[i] <<",";
}
 

Вложения