В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
danya166
danya166
30.12.2021 17:15 •  Информатика

[java] дана вещественная матрица размером 10х40. упорядочить ее строки по убыванию суммы их элементов

Показать ответ
Ответ:
Fulin666
Fulin666
09.10.2020 12:39

public class MyClass {

   public static void main(String args[]) {

       

       int dimention1 = 10;

       int dimention2 = 5;//40

       

       double[][] matrix = new double[dimention1][dimention2];

       

       fill(matrix);

       print(matrix);

       matrix = sort(matrix, getOrder(matrix));

       print(matrix);

   }

   

   

   private static double[][] sort(double[][]matrix, int[] order)

   {

       double[][] ret = new double[matrix.length][matrix[0].length];

       

       for (int i=0;i<matrix.length;i++ )

       {

           for (int j=0;j<matrix[i].length;j++ )

           {

               ret[i][j] = matrix[order[i]][j];

           }

       }

       return ret;

   }

   

   private static void fill(double[][] matrix)

   {

       for (int i=0;i<matrix.length;i++ )

       {

           for (int j=0;j<matrix[i].length;j++ )

           {

               matrix[i][j] = Math.random()*10;

           }

       }

   }

   

   private static int[] getOrder(double[][] matrix)

   {

       double[] sums = new double[matrix.length];

       for (int i=0;i<matrix.length;i++ )

       {

           for (int j=0;j<matrix[i].length;j++ )

           {

               sums[i]+=matrix[i][j];

           }

       }

       

       int[] order = new int[sums.length];

       for (int i=0;i<sums.length;i++ )

       {

           order[i] = i;

       }

       

       for (int i=0;i<sums.length;i++ )

       {

           for (int j=i+1;j<sums.length;j++ )

           {

               if(sums[i]<sums[j])

               {

                   double tmp1 = sums[i];

                   int tmp2 = order[i];

                   sums[i] = sums[j];

                   order[i] = order[j];

                   sums[j] = tmp1;

                   order[j] = tmp2;

               }

               

           }

       }

       return order;

   }

   

   private static void print(double[][] matrix )

   {

       for (int i=0;i<matrix.length;i++ )

       {

           double sum = 0.0;

           for (int j=0;j<matrix[i].length;j++ )

           {

                System.out.print(matrix[i][j]+" ");

                sum+=matrix[i][j];

           }

           System.out.println(" sum: "+sum);

       }

       System.out.println();

   }

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота