Сотрудничество |
Поставьте себе на сайт и сообщите мне |
|
Файлы |
Основные функции работы с матрицами С++
Название: Основные функции работы с матрицами С++
Категория: Лабы по С++
Формат файла: *.cpp
Размер: 3.8 Kb
Просмотров: 14739
Загрузок: 2526
Дата добавления: 18 Августа 2009, 09:55
Поделиться:
|
Скачать:
Внимание! Если ссылка не работает, файл не найден или просто возникают какие-либо вопросы, напишите об этом, пожалуйста, мне на почту: xdypx@yandex.ru. В письме достаточно указать ссылку на эту страницу и описание проблемы или свой вопрос.
|
|
Описание:
Приемы и примеры работы с матрицами на С++. Это и транспонирование
матрицы на с++, и возведение матрицы в квадрат на с++, и приведение
матрицы к диагональному виду на с++. Готовая программа на с++ для работы с матрицами, транспонирование,
возведение в квадрат, приведение к ступенчатому виду скачать бесплатно
и без регистрации.
Исходный код:
Code #include<iostream.h> #include<stdio.h> #include<conio.h> #include<math.h>
//transponirovannaja matrica int transponir(int **A,int n) { int **BB; int i,j; BB =new int*[n]; for (i=0; i<n; i++) { BB[i]=new int [n]; } for(i=0;i<n;i++) { for(j=0;j<n;j++) { BB[j][i]=A[i][j]; } } cout<<"Transponirovannajaj matrica :"<<endl; for(i=0;i<n;i++) { for(j=0;j<n;j++) { cout<<BB[i][j]<<" "; } cout<<endl; } return **BB; }
//Vozvedenie matrici v kvadrat int Kvadrat(int **A, int n) { int **CC; int i,j; CC =new int*[n]; for (i=0; i<n; i++) { CC[i]=new int [n]; }
for(i=0;i<n;i++) { for(j=0;j<n;j++) { int Sum=0; for (int q=0; q<n; n++) { Sum+=A[i][n]* A[n][j]; } CC[i][j]=Sum; } } cout<<"Matrica v kvadrate :"<<endl; for(i=0;i<n;i++) { for(j=0;j<n;j++) { cout<<CC[i][j]<<" "; } cout<<endl; } return **CC; } //privedenie k dagonalnomu vidu int slau(int **A,int n) { int ma,c,max; int **a,r,k,i,j,f; a=new int *[n]; for (i=0;i<n;i++) //pamjat dlja matricy { a[i]=new int [n]; } for (i=0;i<n;i++) { for (j=0;j<n;j++) { a[i][j]=A[i][j]; } }
f=0; for (k=0;k<n;k++) //nahoczdenie max elementa { max=fabs(a[k][k]); r=k; for (i=k+1;i<n;i++) { if (fabs(a[i][k])>max) { max=fabs(a[i][k]); r=i; } }
if (i!=r) f=f+1;
for (j=0;j<n;j++) { c=a[k][j]; a[k][j]=a[r][j]; a[r][j]=c; } for (i=k+1;i<n;i++) { for (ma=a[i][k]/a[k][k],j=k;j<n;j++) a[i][j]-=ma*a[k][j]; } } int det,fl; fl=1; det=1; for (i=0;i<n;i++) { if (a[i][i]!=0) det=det*a[i][i]; //determinant else {fl=0;break;} //esli raven 0 } //osvoboczdenie pamjati if (fl==0) {for (i=0;i<n;i++) delete[]a[i];delete[]a; return 0;} else {for (i=0;i<n;i++) delete[]a[i];delete[]a;return det;} }
//glavnaja int main() { clrscr(); int **A,*Y; int n,i,j; A=new int *[n]; Y=new int [n]; cout<<"Vvedite razmer kvadratnoi matricy:"<<endl; cin>>n; for (i=0;i<n;i++) //pamjat dlja matrici A { A[i]=new int [n]; } cout<<"Vvedite elementy matricy:"<<endl; for(i=0;i<n;i++) //vvod matricy A { for(j=0;j<n;j++) { cin>>A[i][j]; } } cout<<endl; cout<<"Poluchennaja matrica:"<<endl; for(i=0;i<n;i++) //vyvod { for(j=0;j<n;j++) { cout<<A[i][j]<<" "; } cout<<endl; } transponir(A,n); Kvadrat(A,n); //transponirovannaja int det; det=slau(A,n); //determinant if (det==0) { //esli determinant raven nulju for(i=0;i<n;i++) delete[]A[i];delete[]A; for(i=0;i<n;i++) ;delete[]Y; cout<<"opredelitel raven 0!"<<endl; getch(); return 0; } else { //inache double **C; C=new double *[n]; for (i=0;i<n;i++) //pamjat dlja nowoj matricy { C[i] = new double [n]; } for (i=0;i<n;i++) //obratnaja { for (j=0;j<n;j++) { C[i][j]=((double)Y[i])/double(det); } } cout<<"Poluchennaja obratnaja matrica:"<<endl; for(i=0;i<n;i++) { for(j=0;j<n;j++) { cout<<C[i][j]<<" "; } cout<<endl; } int fll; fll=1; for(i=0;i<n;i++) //sravnenie transponirovannoj s obratmoj { for(j=0;j<n;j++) { if (A[i][j]==C[i][j]) fll=1; else { fll=0;break;} } } /* if (fll==1) { cout<<"Da,matrica ortogonalna."<<endl; //osvoboczdenie for(i=0;i<n;i++) delete[]A[i];delete[]A; for(i=0;i<n;i++) delete[]B[i];delete[]B; for(i=0;i<n;i++) delete[]C[i];delete[]C; getch(); return 0; } else { cout<<"Net,matrica ne ortogonalna."<<endl; //osvoboczdenie for(i=0;i<n;i++) delete[]A[i];delete[]A; for(i=0;i<n;i++) delete[]B[i];delete[]B; for(i=0;i<n;i++) delete[]C[i];delete[]C;*/ getch (); return 0; } }
|
Комментарии:
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
|
|
|