有关稀疏矩阵的习题

编写C函数readMatrix 读系数矩阵(三元组),函数printMatrix打印系数矩阵非零元(看错写成了打印矩阵,费老了劲了,弱爆了我),函数search在系数矩阵中查找给定值。
#include <stdio.h>

#define MAX_TERMS  101
#define MAX_COL  8

typedef struct {
    int row;
    int col;
    int value;
} term;
term a[MAX_TERMS];
term b[MAX_TERMS];

int readMatrix(term b[]);   //读系数矩阵三元组
int printMatrix(term a[]);  //打印系数矩阵
int Judge(int j, int k, int numTerms, term c[]);
int search(term d[], int num);  //在系数矩阵中查找给定值
int main(void) {
    int z;
    a[0].row=6; a[0].col=6; a[0].value=8;   //测试用矩阵a
    a[1].row=0; a[1].col=0; a[1].value=15;
    a[2].row=0; a[2].col=3; a[2].value=22;
    a[3].row=0; a[3].col=5; a[3].value=-15;
    a[4].row=1; a[4].col=1; a[4].value=11;
    a[5].row=1; a[5].col=2; a[5].value=3;
    a[6].row=2; a[6].col=3; a[6].value=6;
    a[7].row=4; a[7].col=0; a[7].value=91;
    a[8].row=5; a[8].col=2; a[8].value=28;
    
    //printMatrix(a);
    //readMatrix(b);
    //printMatrix(b);
    printf("请输入您想查找的值:");
    scanf("%d",&z);
    search(a,z);    //可修改a为读入矩阵
    return 0;
}
int readMatrix(term b[]){   //读系数矩阵三元组
    int i;
    printf("请输入系数矩阵三元组: \n");
    scanf("%d, %d, %d", &b[0].row, &b[0].col, &b[0].value);
    for(i = 1; i<= b[0].value; i++){
        scanf("%d, %d, %d", &b[i].row, &b[i].col, &b[i].value);
    }
    return 0;
}

int printMatrix(term c[]){  //打印系数矩阵
    int j, k, numCols = c[0].col, numRows = c[0].row, numTerms = c[0].value;
    if(numTerms>0){
        for(j=0; j<numRows; j++){
            for(k=0; k<numCols; k++){
                printf("%d ", Judge(j, k, numTerms,c));
            }
            printf("\n");
        }
    }
    return 0;
}

int Judge(int j, int k, int numTerms, term c[]){    //给'打印'函数返回值
    int i;
    for(i=1; i<=numTerms; i++){
        if(c[i].col==k&&c[i].row==j){
            return c[i].value;
        }
    }
    return 0;
}
int search(term d[], int num){  //在系数矩阵中查找给定值
    int i;
    for(i = 1; i <= d[0].value; i++){
        if(d[i].value == num){
            printf("数字位置为: %d %d \n", d[i].row, d[i].col);
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/sinat_22014829/article/details/46493417