Вывести строку матрицы из разреженной матрицы, сохраненной без нулей - PullRequest
0 голосов
/ 25 апреля 2018

Как напечатать матричную строку между двумя индексами столбцов, если в структуре сохранены только ненулевые индексы?

Мне нужно в принципе, учитывая самый правый индекс матрицы и самый левый индекс матрицы, вывести эту строку матрицы между обоими значениями, если в этой строке есть хотя бы один индекс, который не равен нулю, и если строка Я хочу напечатать между границей строки.

У меня есть структура, в которой я храню свои строки, столбцы и значения из каждого ввода, так что мне не нужно генерировать огромную матрицу, полную «нулей», и у меня есть переменная, которая подсчитывает, сколько у меня значений сохраняется.

int searchForLine(unsigned int l){
    int i;
    for(i=0;i<matrixcount;i++){
        if((auxMatrix[i].line == l)&&(auxMatrix[i].column<=workingMatrix.maxCol)&&(auxMatrix[i].column>= workingMatrix.minCol))
            return (int)auxMatrix[i].value;
    }
    return (int)workingMatrix.zero;
}

void print_line(){
    unsigned int ii,i,userLine;
    scanf("%u", &userLine);
    if((userLine<workingMatrix.minLine) || (userLine>workingMatrix.maxLine)){
        printf("empty line\n");
    }
    else{
        for(ii=0;ii<matrixcount;ii++){
                if(auxMatrix[ii].line!=userLine){
                    printf("empty line\n");break;
                }else{;}
        }

        for(i=workingMatrix.minCol;i<workingMatrix.maxCol;i++){
            printf("%u ",searchForLine(userLine));
        }
                    }
                    printf("\n");
                    }

, если ввод, скажем,

3 3 3.0
3 0 4.0
print_line(3)->
4.0 0.0 0.0 3.0

Мой текущий код печатает только 0.0

...