Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/76: Рейтинг темы: голосов - 76, средняя оценка - 4.63
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424

Поменять местами строки и столбцы в матрице

11.12.2010, 01:09. Показов 14547. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поменять местами строки и столбцы.
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
class Stolb {
                public static void main(String args[]) {
                        int i, j;
                        int[][]mas = new int[5][5];
 
                        for (i = 0; i < 5; ++i) {
                                        for (j = 0; j < 5; ++j) {
                                                        mas[i][j] = (int)(Math.random() * 20 - 10);
                                                        System.out.print (mas[i][j] + " ");
                                                }
 
                                        System.out.println();
                                }
 
                        System.out.println("-------------");
 
                        for (i = 0; i < 5; ++i) {
                                        for (j = 0; j < 5; ++j) {
 
                                                        int tmp = mas[i][j];
                                                        mas[i][j] = mas[j][i];
                                                        mas[j][i] = tmp;
 
                                                        System.out.print (mas[i][j] + " ");
                                                }
 
                                        System.out.println();
                                }
                }
        }
Вроде всё должно работать. Но в тоже время замена происходит неверно..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2010, 01:09
Ответы с готовыми решениями:

В данной матрице n x m поменять местами указанные строки и столбцы
В данной действительности матрице размера n x m (n ≥ 3, m ≥ 3) поменять местами: а) строки с номерами 2 и n-1 б) столбцы с...

Поменять местами столбцы в матрице
Вот есть код : вычитывает сумму каждого столбца , теперь надо поменять столбцы по возрастанию их суммы . Не могу понять помогите пожалуйста...

Поменять столбцы и строки массива местами
Помогите сделать задачку. &quot;Перевернуть&quot; массив. У вас есть двухмерный массив , придумайте способ поменять столбцы и строки местами. ...

10
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
11.12.2010, 01:40
Guliash, вы хотели сказать, что замена вообще не происходит? Причина элементарна.
Вы берете элемент mas[i][j] и меняете его местами с mas[j][i]. Вроде все логично и все правильно. НО.
Потом вы берете элемент mas[j][i] и меняете его с mas[i][j] и возвращаетесь к исходной матрице.
Посмотрите аттач этого поста https://www.cyberforum.ru/java... post997769
0
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
11.12.2010, 13:10  [ТС]
Замена происходит, но не корректно..
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
11.12.2010, 13:26
Guliash, выложите весь код
0
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
11.12.2010, 14:32  [ТС]
Ну если следовать Вашим советам, то следовало бы оставить вот так:
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
class Stolb {
                public static void main(String args[]) {
                        int i, j;
                        int[][]mas = new int[5][5];
 
                        for (i = 0; i < 5; ++i) {
                                        for (j = 0; j < 5; ++j) {
                                                        mas[i][j] = (int)(Math.random() * 20 - 10);
                                                        System.out.print (mas[i][j] + " ");
                                                }
 
                                        System.out.println();
                                }
 
                        System.out.println("-------------");
 
                        for (i = 0; i < 5; ++i) {
                                        for (j = 0; j < 5; ++j) {
 
                                                        mas[i][j] = mas[j][i];
 
                                                        System.out.print (mas[i][j] + " ");
                                                }
 
                                        System.out.println();
                                }
                }
        }
Добавлено через 2 минуты
Он меняет столбцы на строки. Но при этом исходные столбцы остаются..
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
11.12.2010, 14:42
Guliash, судя по моим словам, надо организовать два цикла так, чтобы они прошлись по элементам ниже главной диагонали(или выше главной, как вам удобнее, главное чтобы не оба вместе) и поменяла бы местами элементы, тогда все строки и поменяются местами со столбцами

И я не говорил делать присвоение, а вы его и сделали, при этом потеряв обмен
1
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
11.12.2010, 16:25  [ТС]
Сделал с использованием доп. массива. Не знаю как по другому...
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
11.12.2010, 19:47
Guliash, проанализируйте этот код, особенно строки 15-21

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
public class Main {
 
   public static void main(String[] args) throws Exception {
      int n = 9;
      int[][] matr = new int[n][n];
      int i, j;
      for (i = 0; i < n; ++i)
         for (j = 0; j < n; ++j)
            matr[i][j] = i * 10 + j + 10;
      System.out.println("Matrix:");
      for (i = 0; i < n; ++i, System.out.println())
         for (j = 0; j < n; ++j)
            System.out.print(matr[i][j] + " ");
 
      int buf;
      for (i = 1; i < n; ++i)
         for (j = 0; j < i; ++j) {
            buf = matr[i][j];
            matr[i][j] = matr[j][i];
            matr[j][i] = buf;
         }
      System.out.println("\nTranspose:");
      for (i = 0; i < n; ++i, System.out.println())
         for (j = 0; j < n; ++j)
            System.out.print(matr[i][j] + " ");
   }
}
1
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
11.12.2010, 22:21  [ТС]
Да походу дела у меня была ошибка, надо было с 1 первой строки начинать..
Скину на крайний случай код, с использованием доп. массива. Вдруг пригодится кому.
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
class Stolb {
                public static void main(String args[]) {
                        int i, j;
                        int[][]mas = new int[5][5];
                        int[][]mast = new int[5][5];
 
                        for (i = 0; i < 5; ++i) {
                                        for (j = 0; j < 5; ++j) {
                                                        mas[i][j] = (int)(Math.random() * 20 - 10);
                                                        System.out.print (mas[i][j] + " ");
                                                }
 
                                        System.out.println();
                                }
 
                        System.out.println("-------------");
 
                        for (i = 0; i < 5; ++i) {
                                        for (j = 0; j < 5; ++j) {
                                                        mast[j][i] = mas[i][j];
                                                }
                                }
 
                        for (i = 0; i < 5; ++i) {
                                        for (j = 0; j < 5; ++j) {
                                                        System.out.print (mast[i][j] + " ");
                                                }
 
                                        System.out.println();
                                }
                }
 
        }
Добавлено через 24 секунды
M128K145, спасибо Вам большое!
1
1 / 1 / 0
Регистрация: 02.02.2017
Сообщений: 1
02.02.2017, 18:54
Все что нужно было изменить:
Java
1
2
3
int tmp = mas[i][j+i];
mas[i][j+i] = mas[j+i][i];
mas[j+i][i] = tmp;
И не нужны вспомогательные массивы. Работает для массива любой длинны!
1
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 331
05.12.2018, 11:36
Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2018, 11:36
Помогаю со студенческими работами здесь

Поменять местами строки (столбцы) в матрице.
Дана матрица размерам 5*10.Поменять местами строки (столбцы), содержащие минимальный и максимальный алименты матрицы.

Поменять местами строки и столбцы в матрице.
Дана матрица размером 7x4. Переставляя её строки и столбцы, добейтесь того, чтобы наибольший элемент (один из них) оказался в верхнем левом...

В матрице поменять местами строки и столбцы
В данной действительной матрице размера n⨯m ( n≥3 , m≥3 ) поменять местами: а)строки с номерами 2 и n-1; б)столбцы с номерами 3 и n-2.

Поменять местами строки и столбцы в матрице
Как в Python поменять строки и столбцы местами в матрице

Как поменять местами столбцы и строки в матрице
1 и 2 строки и 1 и 2 столбцы в матрице B2 И еще вопрос, почему при попытке вычислить разность A3-B3 выдает ошибку (B3 не определена)?


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru