Дана квадратная матрица. Если в i-ой строке матрицы элемент принадлежащий главной диагонали отрицателен, то заменить этот элемент суммой элементов i-ой строки; в противном случае-произведением элементов i-ой строки. Элементы главной диагонали (измененные)вывести в одномерный массив в порядке возрастания. Вывести исходную и преобразованную матрицы, полученный массив.Вот собственно задача, я написал такой вот код, но выводит какие-то космические числа. Еще когда пытаюсь вывести преобразованную матрицу, она почему то выводится в столбик. Пожалуйста помогите.
#include "stdafx.h"
#include <cmath>
#include <iomanip>
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
setlocale(0, "");
srand(unsigned(time(NULL)));
double sum = 0, proizv = 1;
int N, M, fv, lv;
cout << "_________________________________________________________________________"<< endl;
cout << "Введите размер матрицы: ";
cin >> N >> M;
cout << "Введите нижний предел рандомных чисел" << endl;
cin >> fv;
cout << "Введите верхний предел рандомных чисел" << endl;
cin >> lv;
int** A = new int*[N];
for (int i = 0; i < N; i++)
A [i] = new int[M];
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
A[i][j] = fv + rand() % (lv - fv + 1);;
cout << "Вот матрица:" << endl;
for (int i = 0; i < N; i++)
{
for(int j = 0; j < M; j++)
cout << A[i][j] << " ";
cout << endl;
}
cout << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
if (A[i][i] < 0)
{
A[i][i] = sum + A[i][j];
}
}
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
if (A[i][i] >= 0);
{
proizv *= A[i][j];
A[i][i] = proizv * A[i][j];
}
}
}
cout << "Преобразованная матрица:" << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
cout << A[i][j] << "\t";
cout << "\n";
}
}
system("pause");
return 0;
}
Вот эту часть кода:
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
if (A[i][i] < 0)
{
A[i][i] = sum + A[i][j];
}
}
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
if (A[i][i] >= 0);
{
proizv *= A[i][j];
A[i][i] = proizv * A[i][j];
}
}
}
можно заменить на:
for (int i = 0; i < N; i++)
{
if (A[i][i] < 0)
{
int sum = 0;
for (int j = 0; j < N; j++)
{
sum += A[i][j];
}
A[i][i] = sum;
}
else if (A[i][i] > 0)
{
int product = 1;
for (int j = 0; j < N; j++)
{
product *= A[i][j];
}
A[i][i] = product;
}
else
{
A[i][i] = 0;
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я установил себе на компьютер boostПрошел все этапы установки по гайду из интернета,подключил скомпилированные библиотеки в cpp-properties
У меня есть класс Function и Hyperbola, который наследует FunctionПоскольку формула гиперболы k / x, то делаю проверку x == 0 и в случае, если х==0 удаляю этот...
Есть родительский класс command и два дочерних - movement и rootЗаголовочный файл:
Не могу понять, как можно реализовать это (если можно, попробуйте объяснить мне, как все нужно делать):