多元一次方程组的程序

/*
	±¾³ÌÐòÖ»½â¾öÁËnÔªÒ»´Î·½³Ì×飬ÆäËûÓжà¸ö½âµÄ£¬²»ÌÖÂÛ£» 
*/

#include <iostream>
#include <stdio.h>
using namespace std;
void show(float a[][20], int n, int m){
	printf("****************\n");
	for(int i=0; i<n; ++i)	{
		for(int j=0; j<m+1; ++j){
			printf("%4.4f\t", a[i][j]);
		}
		printf("\n");
	}
}
int main(){	
	freopen("a.txt", "r", stdin);
	int n,r; 
    printf("ÇëÊäÈëδ֪Êý¸öÊýnºÍ·½³ÌµÄ¸öÊý:\n"); 
    scanf("%d %d", &n, &r);  
    float a[11][20];        
    printf("ÇëÊäÈë·½³Ì×é²ÎÊý\n");  
    for(int j=0; j<n; j++)   
        for(int i=0; i<r+1; i++)   
            scanf("%f", &a[j][i]); 
    if(r<n)   
        printf("·½³ÌÓÐÎÞÇî½â\n"); 	
	show(a, n, n);
	float temp;
	if(r == n){
		printf("·½³ÌÓÐΨһ½â\n");
		for(int i = 0; i<n-1; ++i){
			for(int j = i+1; j<n; ++j){
				temp = a[j][i] / a[i][i];
				printf("%d %d %4.2f\n", i, j,temp);
				for(int k = i; k<n+1; ++k){
					a[j][k] -= a[i][k]*temp;
				}				
			}			
		}
		show(a, n, n);
		for(int i = n-1; i >= 0; --i){
			for(int j = i-1; j>=0; --j){
				temp = a[j][i] / a[i][i];
				printf("%d %d %4.2f\n", i, j,temp);
				for(int k = n; k>=i; --k){
					a[j][k] -= a[i][k] * temp;
				}
			}			
		}
		for(int i=0; i<n; ++i){
			a[i][n] /= a[i][i];
		}
		printf("res :\n");
		for(int i=0; i<n; ++i){
			printf("%8.3f\n", a[i][n]);
		}
	}
}
发布了76 篇原创文章 · 获赞 0 · 访问量 7181

猜你喜欢

转载自blog.csdn.net/julicliy/article/details/84251187
今日推荐