Задание:Упорядочить содержащие нули строки матрицы S(n, m) в порядке возрастания их количества.
Код полностью рабочий , можете вставить в кампилятор и увидеть ,что код работает только для 2 строк , а как записать что бы для всех которые будет вводить пользователь?
#include <stdio.h>
#include <stdlib.h>
int main(){
int arr_S[100][100];
int m; //кількість стовпців
int n=2; //рядків
int k[2]={};
printf("Уведіть кількість рядків масиву n = ");
while (1)
{
if (scanf("%d", &n)!=1 || n <= 0)
{
//якщо не виконуються умови-виведення запиту на повторне введення
printf("Ви ввели неправильне значення. Спробуйте ще раз:\n");
while(getchar() != '\n') //очистка буфера вводу та очікуання на правильний результат
continue;
}
else if (n > 100)
{
//якщо переповнення масиву-виведення запиту на повторне введення
printf("Забагато рядків. Спробуйте ще раз:\n");
while(getchar() != '\n') //очистка буфера вводу та очікуання на правильний результат
continue;
}
else
break;
}
//введення кількості стовпців
printf("Уведіть кількість стовпців масиву m = ");
while (1)
{
if (scanf("%d", &m)!=1 || m <= 0)
{
//якщо не виконуються умови-виведення запиту на повторне введення
printf("Ви ввели неправильне значення. Спробуйте ще раз:\n");
while(getchar() != '\n') //очистка буфера вводу та очікуання на правильний результат
continue;
}
else if (m > 100)
{
//якщо переповнення масиву-виведення запиту на повторне введення
printf("Забагато стовпців. Спробуйте ще раз:\n");
while(getchar() != '\n') //очистка буфера вводу та очікуання на правильний результат
continue;
}
else
break;
}
//введення елементів масиву
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
{
printf("arr_S[%d][%d] = ", i, j);
while (scanf("%d", &arr_S[i][j])!=1)
{
//якщо не виконуються умови-виведення запиту на повторне введення
printf("Ви ввели неправильне значення. Спробуйте ще раз:\n");
while(getchar() != '\n') //очистка буфера вводу та очікуання на правильний результат
continue;
}
}
printf("\nПочаткова матриця: \n");
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
printf(" %d ", arr_S[i][j]);
}
printf("\n");
}
int i,j;
{
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 < n ; 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;
}
}
printf("\nВідсортована матриця: \n");
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
printf(" %d ", arr_S[i][j]);
}
printf("\n");
}
}
}