fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. Sparse_print(int m, int n, int Sparse[m][n])
  5. {
  6. printf("輸入稀疏矩陣:");
  7. printf("\n");
  8. int i, j;
  9. for(i = 0; i < m; i++){
  10. for(j = 0; j < n; j++)
  11. printf("%3d ", Sparse[i][j]);
  12. printf("\n");
  13. }
  14. }
  15.  
  16. //壓縮處理
  17. Compress_process(int m, int n, int Sparse[m][n], int Compress[m][n])
  18. {
  19. int i,j,k;
  20. k = 1; // 設定變數初值
  21. Compress[0][0] = m; // 陣列sparse有m列
  22. Compress[0][1] = n; // 陣列sparse有n行
  23. Compress[0][2] = 5; // 陣列使用5個元素
  24. for ( i = 0; i < m; i++ ) // 二維陣列的走訪
  25. for ( j = 0; j < n; j++ )
  26. if ( Sparse[i][j] != 0 ) // 判斷是否為非0元素
  27. {
  28. Compress[k][0] = i; // 儲存列數
  29. Compress[k][1] = j; // 儲存行數
  30. //儲存元素值
  31. Compress[k][2] = Sparse[i][j];
  32. k++; // 下一列
  33. }
  34. }
  35.  
  36. //輸出壓縮結果
  37. Compress_print(int m, int n, int Compress[m][n])
  38. {
  39. printf("輸出壓縮結果:");
  40. printf("\n");
  41. int i, j;
  42. for(i = 0; i < m; i++){
  43. for(j = 0; j < n; j++)
  44. printf("%3d ", Compress[i][j]);
  45. printf("\n");
  46. }
  47. }
  48. main()
  49. {
  50. int Sparse[4][3] = {{5, 0, 0}, {0, 0, -1}, {3, 0, 0}, {0, 9, 10}};
  51. int Compress[6][3];
  52.  
  53. //兩個矩陣相加
  54. printf("===============程式描述=======================\n");
  55. printf("= 程式名稱:ch3-7.4.c =\n");
  56. printf("= 程式目的:將一稀疏矩陣轉換成壓縮的表示法 =\n");
  57. printf("==============================================\n");
  58. Sparse_print(4,3,Sparse); //輸入稀疏矩陣
  59. Compress_process(4, 3, Sparse, Compress); //壓縮處理
  60. Compress_print(6, 3, Compress); //輸出壓縮結果
  61. system("PAUSE");
  62. return(0);
  63. }
  64. //輸出稀疏矩陣
  65.  
Success #stdin #stdout 0.02s 5312KB
stdin
Standard input is empty
stdout
===============程式描述=======================
= 程式名稱:ch3-7.4.c                        =
= 程式目的:將一稀疏矩陣轉換成壓縮的表示法   =
==============================================
輸入稀疏矩陣:
  5   0   0 
  0   0  -1 
  3   0   0 
  0   9  10 
輸出壓縮結果:
  4   3   5 
  0   0   5 
  1   2  -1 
  2   0   3 
  3   1   9 
  3   2  10