ybusflow.cpp

来自「导纳矩阵的形成方法,用于电力系统潮流计算分析相当有用.」· C++ 代码 · 共 106 行

CPP
106
字号
#include<iostream.h>
#include<stdio.h>

#define N 4
#define M N*(N-1)/2

void trianglestore(int A[N][N])
{
int i,j;
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
			cout<<A[i][j];
		cout<<endl;
		
	}
	
	int	U[M],JU[M],IU[N],L[M],IL[M],JL[N],D[N];
	for(i=0;i<N;i++)
		IU[i]=0;
    //存储A的上三角部分的非零元的值,按行一次存储//
		int k=0;
		int q=0;
		for(i=0;i<N;i++)
		{
			for( j=i+1;j<N;j++)
		
			{
				if(A[i][j]!=0)
				{
					U[k]=A[i][j];
				//存储A中上三角部分的非零元的列号//
					JU[k]=j;
				    k++;
				//存储A中上三角部分每行第一个非零元再U中的位置(首地址)//
					if(IU[i]=0) 
					{
						IU[i]=1+q;
						q++;
					}
					else q++;
				}
				
			}
			if(IU[i]=0)IU[i]=q+1;
		}

			k=0;
			q=0;
			for(j=0;j<N-1;j++)
				for(i=j+1;i<N;i++)
				{
					//按列存储A中的下三角非零元素的值//
					if(A[i][j]!=0)
					{
						L[k]=A[i][j];
						
					//按列存储A中下三角非零元素的行号//
						IL[k]=i;
						k++;
					//存储A的下三角部分每列第一个非零元在L中的位置(首地址)//
						if(JL[j]=NULL) 
						{
							JL[j]=1+q;
							q++;
						}
						
					}
					JL[j]=q;
				}
				for(i=0;i<N;i++)
					D[i]=A[i][i];
				cout<<"输入U的值"<<endl;

				for(k=0;k<N-1;k++)
					cout<<U[k]<<endl;
				
				cout<<"输入JU的值"<<endl;
				for(k=0;k<N-1;k++)
					cout<<JU[k]<<endl;

				cout<<"输入IU的值"<<endl;

				for( i=0;i<N;i++)
					cout<<IU[i]<<endl;

}



void main()
{
int B[N][N];
for(int i=0;i<N;i++)
{
	for(int j=0;j<N;j++)
	{
		cin>>B[i][j];
	}
	cout<<endl;
}


trianglestore(B);
getchar();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?