问题如下
不知道为什么 我有一个求稀疏因子的函数,但是每次输出都输出不了,我是本科生
想慢慢研习C++一步一步的实验 所以希望 有这几点:
一、希望大神们能找到我的问题所在 为什么稀疏矩阵的稀疏因子无法求得
二、我的C++编程风格有什么需要改进的么?
三、出现的问题我需要在加强哪方面的学习才能改善?
四、希望能给我一点支持 我会长期在这里提问 加强自己的实验能力
谢谢大家了!
代码如下:
1 #include <iostream> 2 using namespace std; 3 /* 按照压缩储存的观念,我们对于稀疏矩阵进行只存贮 非零元,因此,除了储存非零元的值之外 4 我们还要几下非零元的行列(i,j)。 5 反之,一个三元组(i,j,a[i][j])唯一确定了矩阵A的一个非零元。 6 7 实验目的: 8 实现三元组压缩储存一个定义的稀疏矩阵 9 计算稀疏矩阵稀疏因子 10 计算三元组和稀疏矩阵的压缩比例 11 实验步骤: 12 构造稀疏矩阵 然后进行压缩储存 并输出 13 */ 14 #define SIZE 10 15 #define TRUE 1 16 #define error 0 17 int sparse_matrix[SIZE][SIZE],m,count; 18 int i,j; 19 int k; 20 int input(){ 21 cout<<"please input the size of the sparse matrix (m<10)"<<endl; 22 cin>>m; 23 while (m>=10){ 24 cout<<"input data error,please insure the num less than 10 "<<endl; 25 cin>>m; 26 } 27 for(i=0;i<m;i++) 28 for(j=0;j<m;j++){ 29 cout<<"sparse_matrix["<<i<<"]["<<j<<"]=..."; 30 cin>>sparse_matrix[i][j]; 31 } 32 33 return TRUE; 34 } 35 36 37 38 int print_matrix(){ 39 cout<<endl;cout<<"sparse_matrix as fallow "<<endl; 40 for(i=0;i<m;i++){ 41 for(j=0;j<m;j++){ 42 cout<<sparse_matrix[i][j]<<" | "; 43 } 44 cout<<endl; 45 } 46 47 return TRUE; 48 } 49 50 /*double calculate_sparse_factor(){ 51 for(i=0;i<m;i++){ 52 for(j=0;j<m;j++){ 53 if(sparse_matrix[i][j]!=0){ 54 count++; 55 } 56 } 57 } 58 59 return (count/(m*m)); 60 }*/ 61 typedef struct{ 62 int i,j; 63 int e; 64 }Triple; 65 Triple tri[100]; 66 int compress(){ 67 for(i=0;i<m;i++){ 68 for(j=0;j<m;j++){ 69 if(sparse_matrix[i][j]!=0){ 70 tri[k].i=i; 71 tri[k].j=j; 72 tri[k].e=sparse_matrix[i][j]; 73 k++; 74 } 75 } 76 } 77 return TRUE; 78 } 79 int print_tri(){ 80 cout<<endl; 81 cout<<"tri is 。。。。。"<<endl; 82 cout<<"___________"<<endl; 83 cout<<"i | j | e |"<<endl; 84 cout<<"-----------"<<endl; 85 for(i=0;i<k;i++){ 86 cout<<tri[i].i<<" | "<<tri[i].j<<" | "<<tri[i].e<<" | "<<endl; 87 } 88 return TRUE; 89 } 90 91 int main(){ 92 cout<<count<<endl; 93 input();//输入稀疏矩阵 94 print_matrix() ;//输出稀疏矩阵 95 compress();//压缩稀疏矩阵 96 print_tri();//输出三元组 97 //cout<<"calculate_sparse_factor =....."<<endl; //////////////!!!!!!!!!!!!整形除以整形的问题??? 98 return TRUE; 99 } 100 101 102
推荐使用数学库
i,j,k......内流满面啊,多看看优化和健壮吧