Нужно сделать двумерный массив и упорядочить строки таблицы в порядке возрастания количества положительных элементов в каждой строке

Я сделал массив но никак не выходит посчитать кол-во натуральных элементов, если ставить условия в for то матрица ломается.

#include <stdio.h>
#include <stdlib.h>


int main() 
{
int S, C, sn, cn, k=0, temp, j=0;;
    
printf("Type the number of strings: ");
scanf("%u", &sn);

if (sn < 1) 
{
    puts("The number of strings should be greater then 0.");
    return -1;
}

printf("Type the number of columns: ");
scanf("%u", &cn);

if (cn < 1) 
{
    puts("The number of columns should be greater then 0.");
    return -1;
}
float X[sn][cn];
for ( C = 1; C < (cn+1); C ++ ) 
    for ( S = 1; S < (sn+1); S ++ ) 
 scanf ("%d", & X[S][C]);
  while (k<cn){
if (X[k][j]>0){k=k+1;temp=temp+1;
}
if (k=S){
printf("ct=%d\n", temp);
temp=0;
j=j+1;}}
return 0;}```

Ответы (1 шт):

Автор решения: MBo

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

float X[sn][cn];
float NumPlus[sn] = {0};
for ( S = 0; S < sn; S++ ) 
    for ( C = 0; C < cn; C++ ) {
      scanf ("%d", & X[S][C]);
      if (X[S][C] > 0)
         NumPlus[S]++;    
    }
for ( S = 0; S < sn; S++ )
   printf("ct[%d]=%d", S, ct[S]); 

   

Затем выполняете любую сортировку, для сравнения используя значения из NumPlus. Когда обмениваете строки, заодно обменивайте и соответствующие значения из NumPlus.

→ Ссылка