nwhta
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору всем привет! прошу помочь студенту(то есть мне). Ниже приводится определение: Разреженной матрицей является матрица, где нулей 60% или более. задача такая: Написать функцию, которая принимает матрицу мат [] [] и проверяет, если это разряженная матрица. Если это так - возвращает указатель на одномерный массив, представляя ее. Если нет - печатает соответствующее сообщение и возвращает NULL. вот что я написал: (подскажите что не так, чем дополнить?) #include <stdio.h> #include <stdlib.h> #define ROW 4 #define COLUMN 5 void f2(int mat[][COLUMN]) { int arr[100], **mat2; int i, j; int z; int cnt = -1; //why cnt must be -1? int cnt2 = 0; for (i = 0; i < ROW; i++) { for (j = 0; j < COLUMN; j++) { if (mat[i][j]) { cnt = cnt + 3; arr[cnt - 2] = mat[i][j]; arr[cnt - 1] = i; arr[cnt] = j; } } } **mat2 = (int*)malloc((cnt / 3)*sizeof(int)); for (j = 0; j < cnt / 3; j++) { mat2[0][j] = arr[cnt2]; mat2[1][j] = arr[cnt2 + 1]; mat2[2][j] = arr[cnt2 + 2]; cnt2 += 3; } } void main() { int i, j; int mat[ROW][COLUMN] = { 0, 5, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 2, 0, 3, 0 }; for (i = 0; i < 3; i++) { for (j = 0; j < 10; j++) { printf("%d",mat); } } } |