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

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

Показать ответ
Ответ:
minohbli2207
minohbli2207
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-бота