Написать программу, вычисляющую определитель и произведение
диагональных элементов матрицы второго порядка. Расчет должен
производиться в функции, которая получает данные по указателю и
возвращает результат по указателю.
C/C++
Помогите решить задачу C++
#include
using namespace std;
double determinant(double a[][2])
{
return a[0][0]*a[1][1]-a[0][1]*a[1][0];
}
int main()
{
const int size=2; // порядок матрицы
double matrix[size][size];
cout<<"Vvedite znacheniya elementiv matrizi A:"<<endl;
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
{
cout<<"A["<<i+1<<"]["<<j+1<<"]=";
cin>>matrix[i][j];
}
}
cout<<"\n\nDeterminant matrizi A raven "<<determinant(matrix)<<endl;
system("pause");
return 0;
}
или можно вот так:
#include
using namespace std;
// Функция вывода матрицы
void PrintMatr(int **mas, int m) {
int i, j;
for (i = 0; i<m; i++) {
for (j = 0; j<m; j++)
cout << mas[i][j] << " ";
cout << endl;
}
}
// Получение матрицы без i-й строки и j-го столбца
void GetMatr(int **mas, int **p, int i, int j, int m) {
int ki, kj, di, dj;
di = 0;
for (ki = 0; ki<m — 1; ki++) { // проверка индекса строки
if (ki == i) di = 1;
dj = 0;
for (kj = 0; kj<m — 1; kj++) { // проверка индекса столбца
if (kj == j) dj = 1;
p[ki][kj] = mas[ki + di][kj + dj];
}
}
}
// Рекурсивное вычисление определителя
int Determinant(int **mas, int m) {
int i, j, d, k, n;
int **p;
p = new int*[m];
for (i = 0; i<m; i++)
p[i] = new int[m];
j = 0; d = 0;
k = 1; //(-1) в степени i
n = m — 1;
if (m<1) cout << "Определитель вычислить невозможно!";
if (m == 1) {
d = mas[0][0];
return(d);
}
if (m == 2) {
d = mas[0][0] * mas[1][1] — (mas[1][0] * mas[0][1]);
return(d);
}
if (m>2) {
for (i = 0; i<m; i++) {
GetMatr(mas, p, i, 0, m);
cout << mas[i][j] << endl;
PrintMatr(p, n);
d = d + k * mas[i][0] * Determinant(p, n);
k = -k;
}
}
return(d);
}
// Основная функция
int main() {
int m, i, j, d;
int **mas;
system("chcp 1251");
system("cls");
cout << "Введите размерность квадратной матрицы: ";
cin >> m;
mas = new int*[m];
for (i = 0; i<m; i++) {
mas[i] = new int[m];
for (j = 0; j<m; j++) {
cout << "mas[" << i << "][" << j << "]= ";
cin >> mas[i][j];
}
}
PrintMatr(mas, m);
d = Determinant(mas, m);
cout << "Определитель матрицы равен " << d;
cin.get(); cin.get();
return 0;
}
using namespace std;
double determinant(double a[][2])
{
return a[0][0]*a[1][1]-a[0][1]*a[1][0];
}
int main()
{
const int size=2; // порядок матрицы
double matrix[size][size];
cout<<"Vvedite znacheniya elementiv matrizi A:"<<endl;
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
{
cout<<"A["<<i+1<<"]["<<j+1<<"]=";
cin>>matrix[i][j];
}
}
cout<<"\n\nDeterminant matrizi A raven "<<determinant(matrix)<<endl;
system("pause");
return 0;
}
или можно вот так:
#include
using namespace std;
// Функция вывода матрицы
void PrintMatr(int **mas, int m) {
int i, j;
for (i = 0; i<m; i++) {
for (j = 0; j<m; j++)
cout << mas[i][j] << " ";
cout << endl;
}
}
// Получение матрицы без i-й строки и j-го столбца
void GetMatr(int **mas, int **p, int i, int j, int m) {
int ki, kj, di, dj;
di = 0;
for (ki = 0; ki<m — 1; ki++) { // проверка индекса строки
if (ki == i) di = 1;
dj = 0;
for (kj = 0; kj<m — 1; kj++) { // проверка индекса столбца
if (kj == j) dj = 1;
p[ki][kj] = mas[ki + di][kj + dj];
}
}
}
// Рекурсивное вычисление определителя
int Determinant(int **mas, int m) {
int i, j, d, k, n;
int **p;
p = new int*[m];
for (i = 0; i<m; i++)
p[i] = new int[m];
j = 0; d = 0;
k = 1; //(-1) в степени i
n = m — 1;
if (m<1) cout << "Определитель вычислить невозможно!";
if (m == 1) {
d = mas[0][0];
return(d);
}
if (m == 2) {
d = mas[0][0] * mas[1][1] — (mas[1][0] * mas[0][1]);
return(d);
}
if (m>2) {
for (i = 0; i<m; i++) {
GetMatr(mas, p, i, 0, m);
cout << mas[i][j] << endl;
PrintMatr(p, n);
d = d + k * mas[i][0] * Determinant(p, n);
k = -k;
}
}
return(d);
}
// Основная функция
int main() {
int m, i, j, d;
int **mas;
system("chcp 1251");
system("cls");
cout << "Введите размерность квадратной матрицы: ";
cin >> m;
mas = new int*[m];
for (i = 0; i<m; i++) {
mas[i] = new int[m];
for (j = 0; j<m; j++) {
cout << "mas[" << i << "][" << j << "]= ";
cin >> mas[i][j];
}
}
PrintMatr(mas, m);
d = Determinant(mas, m);
cout << "Определитель матрицы равен " << d;
cin.get(); cin.get();
return 0;
}
Максим Горшков
Напиши оба варианта
какой первый яп учил?
Похожие вопросы
- Помогите решить задачу, c++, функции
- Помогите решить задачу C++
- Помогите решить задачу c++
- Помогите решить задачу C++
- Помогите решить задачу C++, пожалуйста.
- Помогите решить задачу C++
- Помогите решить задачу . C++
- Пожалуйста, помогите решить задачу! C++
- Помогите решить задачу по программированию на C++
- Помогите решить задачу по C++!