c++ 프로그래밍 역행렬 구하기 (역행렬 구하는 프로그램)
<버전1>
using namespace std;
#include<iostream.h>
void main()
{int a[100][100],i,j;
float determinant=0;
cout<<"역행렬 구하기 \n";
cout<<"100x100 행렬 입력:\n";
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
cin>>a[i][j];
}
}
cout<<"\n행렬 입력:\n";
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
for(i=0;i<100;i++)
{
determinant = determinant + (a[0][i]*(a[1][(i+1)%100]
a[2][(i+2)%100] - a[1][(i+2)%100]*a[2][(i+1
}
if(determinant==0)
{
cout<<"역행렬이 존재하지않음 (Determinant=0).\n";
}
else
{
cout<<"\역행렬: \n";
}
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
cout<<(a[(i+1)%100][(j+1)
a[(i+2)%100][(j+2)%100]) - (a[(i+1)%100][(j+2)%100]*
a[(i+2)%00][(j+1)%100]))/ determinant<<"\t";
}
cout<<"\n";
}
}
위에는 100 by 100 행렬 프로그램입니다.
아래 소스는 임의의 행렬의 역행렬을 구할수 있는 프로그램입니다.
<버전2>
#include<iostream>
using namespace std;
int main()
{
int i,j,k,n;
float a[100][200],t;
cout<<"몇차 행렬입니까-";
cin>>n;
cout<<"행렬 입력"<<endl;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
for(i=0;i<n;i++)
{
for(j=n;j<2*n;j++)
{
if(i==j-n)
a[i][j]=1;
else
a[i][j]=0;
}
}
for(i=0;i<n;i++)
{
t=a[i][i];
for(j=i;j<2*n;j++)
a[i][j]=a[i][j]/t;
for(j=0;j<n;j++)
{
if(i!=j)
{
t=a[j][i];
for(k=0;k<2*n;k++)
a[j][k]=a[j][k]-t*a[i][k]
}
}
}
cout<<"\n\n역행렬\n\n";
for(i=0;i<n;i++)
{
for(j=n;j<2*n;j++)
cout<<"\t"<<a[i][j];
cout<<"\n";
}
return 0;
}
'컴퓨터 > c++' 카테고리의 다른 글
GetAsyncKeyState 윈도우 가상키 코드 virtual key (0) | 2016.09.17 |
---|---|
c++ 두개의 txt파일 문자열 한줄씩 비교한뒤 틀린부분 출력하기 (0) | 2016.08.30 |
URLDownloadToFile 파일 다운로드 api (특정 url에서 특정 폴더로 다운받기) (0) | 2016.08.10 |
프로그램 종료 함수 TerminateProcess() & ExitProcess() (0) | 2016.08.10 |
Shellexecute 프로그램 실행 (0) | 2016.08.10 |