При выполнении вылетает ошибка
Необработанное исключение по адресу 0x0025731B в ConsoleApplication8.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xDDDDDDDD.
Происходит это на шаге вычисления u
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
class Matrix {
public:
double** MATRIX;
int M, N;
void CreateByHand() { // заполнение вручную
int i, j;
MATRIX = new double* [M];
for (i = 0; i < M; i++) {
MATRIX[i] = new double[N];
for (j = 0; j < N; j++) {
cout << "[" << i << "][" << j << "]= ";
cin >> MATRIX[i][j];
}
}
}
void CreateRandom() { // рандомное заполнение
MATRIX = new double* [M];
int i, j;
for (i = 0; i < M; i++) {
MATRIX[i] = new double[M];
for (j = 0; j < N; j++) {
MATRIX[i][j] = rand();
}
}
}
double Element(int j, int m) // элемент с номером j, m
{
return MATRIX[j][m];
}
~Matrix() // деструктор
{
for (int z = 0; z < M; z++)
delete[] MATRIX[z];
delete[] MATRIX;
}
};
// Функция вывода матрицы
void PrintMatr(Matrix V) {
int i, j; // счетчики
for (i = 0; i < V.M; i++) {
for (j = 0; j < V.N; j++)
cout << V.Element(i, j) << " ";
cout << endl;
}
}
// Получение матрицы без i-й строки и j-го столбца
Matrix GetMatr(Matrix G, int i, int j) {
G.M = G.M - 1;
G.M = G.N - 1;
int ki, kj, di, dj;
di = 0;
for (ki = 0; ki < G.M - 1; ki++) { // проверка индекса строки
if (ki == i) di = 1;
dj = 0;
for (kj = 0; kj < G.N - 1; kj++) { // проверка индекса столбца
if (kj == j) dj = 1;
G.MATRIX[ki][kj] = G.Element(ki + di, kj + dj);
}
}
return G;
}
// Рекурсивное вычисление определителя
double Determinant(Matrix L) {
int i, k;
double d;
d = 0;
k = 1; //(-1) в степени i
if (L.M == 1) {
d = L.Element(0, 0);
return(d);
}
if (L.M == 2) {
d = L.Element(0, 0) * L.Element(1, 1) - (L.Element(1, 0) * L.Element(0, 1));
return(d);
}
if (L.M > 2) {
for (i = 0; i < L.M; i++) {
Matrix J = GetMatr(L, i, 0);
d = d + k * L.Element(i, 1) * Determinant(J);
k = -k;
}
}
return(d);
}
Matrix PartialMatrix(Matrix U, Matrix K, int m) // промежуточные матрицы с замененными стобцами
{
int z;
Matrix F = U;
for (z = 0; z < U.M; z++) {
F.MATRIX[z][m] = K.Element(0, z);
}
return F;
}
// Основная функция
int main() {
int m;
cout << "Enter the size of the system matrix: ";
cin >> m;
Matrix A; // матрица системы
A.M = m;
A.N = m;
Matrix B; // вектор свободных членов
B.M = m;
B.N = 1;
cout << "Type in system matrix: "<< endl;
A.CreateByHand();
cout << "Type in constant terms: "<< endl;
B.CreateByHand();
PrintMatr(A);
PrintMatr(B);
> Вот отсюда все плохо
double u = Determinant(A);
cout << "Determinant of the system matrix equals " << u << endl;
int e;
Matrix D; // вектор решения
D.M = m;
D.N = 1;
for (e = 0; e < A.M; e++) {
Matrix C = PartialMatrix(A, B, e);
cout << "Partial matrix " << e << " is" << endl;
PrintMatr(C);
double Y = Determinant(C);
cout << " Determinant of partial matrix " << e << " is " << Y << endl;
D.MATRIX[0][e] = Y / u;
}
for (e = 0; e < A.M; e++) {
cout << "Solution x" << e << " :" << D.Element(0, e) << endl;
}
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пилю сайт, сначала был HTML шаблон, сейчас в процессе натяжки на WPВо время натяжки на CMS появилась промежуточная задача от заказчика, один из пунктов...
Есть корзина интернет магазина, в которой стараюсь сделать перерасчет по клику ценыВ случае 1 товара проблем особых нет, но в случае 2х и более...
пытаюсь стилизовать select, хочу сделать анимацию, что при клике на select и выборе нужного option, border-bottom будет менять цвет, а еще лучше это будет...