Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include <math.h>
- #include <stdlib.h>
- using namespace std;
- void print_m (float **ma,int size_i, int size_j){
- cout << "matrix: " << endl;
- for (int i = 0; i<size_i; i++){
- for (int j = 0; j<size_j; j++)
- if (j>size_j - 2) cout << "| " << ma[i][j]; else
- cout << ma[i][j] << " ";
- cout << endl;
- }
- }
- int main (){
- setlocale(LC_ALL,"Ru");
- int i,j,n,m;
- cout << "введите число уравнений: ";
- cin >> n;
- cout << "введите число неизвестных: ";
- cin >> m;
- m++;
- float **matrix = new float *[n];
- for (i = 0; i<n; i++)
- matrix[i] = new float[m];
- for (i = 0; i<n; i++){
- for (j = 0; j<m; j++){
- cout << "уравнение " << i + 1 << "-е коэффициент " << j + 1 << " : ";
- cin >> matrix[i][j];
- }
- cout<<endl;
- }
- cout<<"\n";
- print_m(matrix,n,m);
- cout << endl;
- //Метод Гаусса------------------------------------------------------------------------------------
- int k;
- float tmp;
- float *xx=new float[n];
- //Прямой ход, приведение к верхнетреугольному виду
- for (i = 0; i<n; i++){
- tmp = matrix[i][i];
- for (j = n; j >= i; j--)
- matrix[i][j] /= tmp; //получаем строку с 1 на ii
- for (j = i + 1; j<n; j++){ //на строку вниз
- tmp = matrix[j][i]; //храним tmp iго столбца нижней строки
- for (k = n; k >= i; k--)
- matrix[j][k] -= tmp*matrix[i][k]; //от нижней строки отнимаем верхнюю *tmp, получаем строку вида 0..x..x
- }
- }
- //обратный ход
- xx[n - 1] = matrix[n - 1][n];
- for (i = n - 2; i >= 0; i--){
- xx[i] = matrix[i][n];
- for (j = i + 1; j<n; j++) xx[i] -= matrix[i][j] * xx[j];
- }
- //Выводим решения
- for (i = 0; i<n; i++)
- cout << xx[i] << " ";
- cout <<"\n"<< endl;
- system ("pause");
- for (i = 0; i < n; i++){
- delete[] matrix[i];
- }
- delete[] matrix;
- delete[] xx;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement