Помогите , пожалуйста. По какой то причин вместо того что бы выводить строки по возрастанию 0 в строке ,он меняет символы матрицы. Код и задание:
Задание:Упорядочить содержащие нули строки матрицы S(n, m) в порядке возрастания их количества. Код конечно сортирует ,но мне не нужно менять елементы матрицы.Думаю ошибка в этой части. Допустим на входе матрица 2*3: 1 2 0. 2 3 4. На выходе: 1 0 0. 0 0 -1. Ожидаю: 2 3 4. 1 2 0. То есть она отсортировали по возрастанию ,но и почему то поменяла елементы
double arr_S[100][100]; //двовимірний масив
int n; //кількість рядків
int m; //кількість стовпців
int i,j;
int k[n];
k[n] = 0 ;
for( i = 0 ; i < n ; i++ )
for( j = 0 ; j < m ; j++ )if(arr_S[i][j]==0)k[i]++;
for( i = 0 ; i < n -1 ; i++ )
for( j = i + 1 ; j < m ; j++)
if(k[j]<k[i]){
int tmp = k[i];
k[i]=k[j];
k[j] = tmp;
int p;
for( p = 0 ; p < m ; p++ ){
tmp = arr_S[i][p];
arr_S[i][p]=arr_S[j][p];
arr_S[j][p]=tmp;
}
}
for( i = 0 ; i < n ; i++ ){
for ( j = 0 ; j < m ; j++)
printf("%d ", arr_S[i][j]);
putchar('\n');
}
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
Этот код не должен выдавать ошибок
double arr_S[100][100];
int n=2; //lines
int m; //columns
int i,j;
int k[2]={};