Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
2 / 2 / 5
Регистрация: 31.03.2014
Сообщений: 102
1

Поменять местами элементы (квадратная матрица)

13.06.2014, 17:11. Показов 2470. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не удается поменять элементы матрицы под и над главной диагональю местами при помощи циклов. И ведь понимаю, как делать и формулы понятны. И условиями уже много раз делал. Но как начинаю циклами писать - так "брыдота" лезет. Очевидно, как-то недопонимаю связь в работе парных циклов или что...

Понятно, что:
Первый индекс всех элементов выше главной диагонали меньше второго i < j
Первый индекс всех элементо ниже главной диагонали больше второго i > j

Вроде просто, сделал два общих цикла, а в коде замены элементов массива друг на друга добавил: mas[i][i+1]; mas[i][j-i]. Но ничего не вышло.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import static java.lang.System.out;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone{
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
out.println("Создаем матрицу, заполняем");
        int n = 3;      
        int[][]mas = new int[n][n];     
 
        for(int i = 0; i<mas.length; i++){
            for(int j = 0; j<mas[i].length; j++){
                mas[i][j] = (int)(Math.random()*9);
                out.print(mas[i][j]+" ");
            }
            out.println();
        }
        
         out.println();
        out.println();
        out.println("Меняем местами элементы выше и ниже главной диагонали");
        
      for (int i=0; i<mas.length-1; i++){
                    for(int j = 0; j<mas[i].length; j++){
                        
                        int temp = mas[i][i+1];
                                 mas[i][i+1] = mas[i][j-i];
                        mas[i][j-i]= temp;
                        
                    }
                    }
        
        out.println();
        out.println();
out.println("Вывод матрицы");
        for(int i = 0; i<mas.length; i++){
            for(int j = 0; j<mas[i].length; j++){
               
                System.out.print(mas[i][j]+" ");
            }
          
        
         System.out.println();
        }
      
    }
 
 
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2014, 17:11
Ответы с готовыми решениями:

Квадратная матрица. Поменять строку с максимальным элементом
Добрый вечер, помогите с задачей. Не имею представления как ее решить. Задана квадратная...

Дана действительная квадратная матрица порядка n, все элементы которой различны
Дана действительная квадратная матрица порядка n, все элементы которой различны. Найти наибольший...

Дана квадратная матрица. Нужно распечатать элементы побочной диагонали. Транспонировать матрицу
Добрый вечер, я только начал изучать java, так что не судите строго 1)Дано квадратичная матрица....

Дана квадратная случайная матрица. Зеркально отразить ее элементы относительно побочной диагонали
package com.company; import java.lang.String; import java.util.Random; class Main { ...

2
17 / 17 / 6
Регистрация: 19.05.2014
Сообщений: 67
13.06.2014, 17:39 2
А тот вариант что я выслал не подошел?! Там же циклы!

Добавлено через 1 минуту
А тот вариант что я выслал не подошел? Там тоже циклы

Добавлено через 1 минуту
Мобильный интернет рулит.
1
2 / 2 / 5
Регистрация: 31.03.2014
Сообщений: 102
13.06.2014, 18:53  [ТС] 3
Да там всё работает. На его основе я и пытался сделать аналогичный код для элементов над и под главной диагональю. Но тут почему-то не получается:-( Вроде делал как у вас, а все равно - чего-то упускаю.

Добавлено через 29 минут
Задача решена! Спасибо leopold_87 за помощь. Я просто сглупил и не догадался, что противолежащие элементы не надо в цикле выводить. Просто они в квадратной матрице будут отражением друг друга. Соответственно, замена поддиагональных и наддиагональных элементов будет всего лишь заменой i и j на j и i. И так же точно в квадратной матрице можно вычислить ЛЮБЫЕ её противолежащие части, в том числе и какие-то сектора. Нужно вычислить циклом один сектор, а второй будет ему симметричен по [i][j]. Вот код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import static java.lang.System.out;
public class ZamDiagElv {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int n = 3;      
        int[][]mas = new int[n][n];
        
        for(int i = 0; i<mas.length; i++){
            for(int j = 0; j<mas[i].length; j++){
                mas[i][j] = (int)(Math.random()*9);
                out.print(mas[i][j]+" ");
            }
            out.println();
        }
        
out.println();
        System.out.println("Меняем местами элементы выше и ниже главной диагонали");
        for (int i=0; i<mas.length;i++){
            for(int j=0; j<i ;j++){             
                int temp = mas[i][j];
                         mas[i][j] = mas[j][i];
                mas[j][i]= temp;
                      
            }
    }
        out.println();
        out.println();
        for(int i = 0; i<mas.length; i++){
            for(int j = 0; j<mas[i].length; j++){
               
                System.out.print(mas[i][j]+" ");
            }         
               System.out.println();
        }
    }
 
}
0
13.06.2014, 18:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2014, 18:53
Помогаю со студенческими работами здесь

Поменять местами элементы
Добрый день, мне нужно поменять местами максимальный и минимальный элемент, но у меня, почему то,...

Поменять местами элементы массива
Приведите фрагмент кода, меняющий местами i-ый и j-ый элементы массива.

Поменять местами элементы массива
В двумерном массиве, состоящем из целочисленных элементов, поменять местами (обмен проводить только...

Попарно поменять элементы местами
Помогите Пожалуйста написать программу: Дан массив a вещественных чисел. Попарно поменять местами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru