Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <fstream>
- #include <cstring>
- #include <iomanip>
- using namespace std;
- float det(float **arr, int row_number, int col_number) //тут особо комментить нечего, функция обсчитывает определитель
- {
- float koef;
- float answer = 1;
- int row;
- for (int k = 1; k < row_number; k++)
- {
- row = 0;
- for (int i = k; i < row_number; i++)
- {
- while (k + row < row_number && arr[k - 1][k - 1] == 0)
- {
- for (int j = 0; j < row_number; j++)
- {
- arr[k - 1][j] = arr[k - 1][j] + arr[k + row][j];
- }
- row++;
- }
- if (arr[k - 1][k - 1] != 0)
- {
- koef = -arr[i][k - 1] / arr[k - 1][k - 1];
- for (int j = 0; j < row_number; j++)
- {
- arr[i][j] = arr[i][j] + arr[k - 1][j] * koef;
- }
- }
- }
- }
- for (int i = 0; i < row_number; i++)
- {
- answer *= arr[i][i];
- }
- return answer;
- }
- int main() {
- float** arr;
- char* string = new char[255];
- char* buf;
- int row_number = 0;
- int col_number = 0;
- ifstream in("test.in");
- ofstream out("test.out");
- if (!in.is_open())
- {
- cout << "File not found";
- return 0;
- }
- while (!in.eof())
- {
- in.getline(string, 255); //считаем количество строчек
- ++row_number;
- }
- in.seekg(0, ios::beg);
- in.getline(string, 255);
- char str[255] = { 0 };
- strcpy(str, string);
- buf = strtok(str, " ");
- while (buf)
- {
- buf = strtok(NULL, " ");
- ++col_number;
- }
- cout << "NUMBESR" << row_number << " - " << col_number << endl; //просто проверка правильности считывания
- arr = new float*[row_number];
- for (int i = 0; i < row_number; ++i) //выделяем память, имея данные о размерности массива
- arr[i] = new float[col_number];
- for (int i = 0; i < row_number; i++)
- {
- for (int j = 0; j < col_number; j++) //обнуление тут чисто для теста
- arr[i][j] = 0;
- }
- in.seekg(0, ios::beg);
- in.clear();
- for (int i = 0; i < row_number; i++) {
- for (int j = 0; j < col_number; j++) {
- in >> arr[i][j]; //ПОЧЕМУ ТЫ НЕ РАБОТАЕШЬ!?!? ВОТ ПОЧЕМУ ОНО СЧИТЫВАЕТ?
- cout << arr[i][j] << endl;
- }
- }
- if (row_number == col_number)
- {
- float d = det(arr, row_number, col_number);
- cout << "\nDeterminant is " << d << endl;
- out << setprecision(2) << d;
- }
- else
- {
- cout << "Your matrix isn't square" << endl;
- return 0;
- }
- in.close();
- out.close();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement