Как поменять элементы матрицы местами
Товарищи, есть задача:
дана матрица m*n. В каждом отдельном столбце найти max и min число, поменять их местами и вывести матрицу. Как поменять местами два числа в матрице.
Помогите, буду благодарен!!
Форумчанин
Регистрация: 30.03.2008
Сообщений: 392
через переменную например tmp
tmp:=a[min,1];
a[min,1]:=a[max,1];
a[max,1]:=tmp;
вот так — и здесь ясно что вместо 1 можно написать i — и делать все это в цикле.
ну сам принцип замены — через переменную
Программирование — это великое искусство. Такое же как например и живопись!
Регистрация: 19.12.2008
Сообщений: 5,788
uses crt; const m=5; n=5; var matr : array[1..m,1..n] of integer; i,j,mini,maxi,tmp : integer; begin clrscr; randomize; for i:=1 to m do begin for j:=1 to n do begin matr[i,j] := random(30)-5; write(matr[i,j]:4); end; writeln; end; writeln('-----------'); for j:=1 to n do begin mini := 1; maxi := 1; for i:=1 to m do begin if matr[i,j]matr[maxi,j] then maxi := i; end; tmp := matr[mini,j]; matr[mini,j] := matr[maxi,j]; matr[maxi,j] := tmp; end; for i:=1 to m do begin for j:=1 to n do write(matr[i,j]:5); writeln; end; readln; end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.
___________________________________ ___________________________________ _______
[=Правила форума=] _____ [Поиск] _____ [Литература по С++] ____ [Литература. Паскаль]
Не могу поменять местами элементы матрицы. Не работает Swap [закрыт]
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.
Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.
Закрыт 1 год назад .
Поменять местами элементы, симметричные относительно ее побочной диагонали. Функция swap не работает. Пробовал менять с дополнительной переменной и без, не работает
#define _CRT_SECURE_NO_WARNINGS #include #include int main() < SetConsoleCP(1251); SetConsoleOutputCP(1251); const int SIZE = 5; FILE* file; FILE* file_2; file = fopen("IMV-LR5.txt", "r"); if (file == nullptr) < printf("Файл не відкрився!"); exit(1); >int temp; int** matrix = new int* [SIZE]; for (int i = 0; i < SIZE; i++) < matrix[i] = new int[SIZE]; >file_2 = fopen("IMV-LR5-2.txt", "w"); fprintf(file_2, "Матриця:\n"); printf("Матриця:\n"); fseek(file, 360, SEEK_SET); for (int i = 0; i < SIZE; i++) < printf("\n"); for (int j = 0; j < SIZE; j++) < fscanf(file, "%d", &temp); matrix[i][j] = temp; >> printf("\n"); /* for (int i = 0; i < SIZE; i++) < printf("\n"); fprintf(file_2, "\n"); for (int j = 0; j < SIZE; j++) < matrix[i][j] = matrix[i][j] - matrix[SIZE - j - 1][SIZE - i - 1]; fprintf(file_2, "%4d ", matrix[i][j]); printf("%4d ", matrix[i][j]); >> */ for (int i = 0; i < SIZE; i++) < printf("\n"); fprintf(file_2, "\n"); for (int j = 0; j < SIZE; j++) < std::swap(matrix[i][j], matrix[SIZE - j - 1][SIZE - i - 1]); fprintf(file_2, "%4d ", matrix[i][j]); printf("%4d ", matrix[i][j]); >> fclose(file); fclose(file_2); >
Файл с коротого читает:
В:18 1. Створити квадратну матрицю розміром 5х5, значення елементів якої заповнити за допомогою генератору випадкових чисел. Записати створену матрицю в файл для подальшої обробки. 2. Зчитати матрицю з файлу й замінити всі елементи, симитричні щодо її побічної діагоналі. 3. Результат обчислення з відповідними коментарями записати в новий файл 2 -13 7 5 0 6 15 -15 0 17 9 -3 -10 -4 0 12 10 4 -4 2 0 -6 16 -4 6
Изменение и реорганизация массивов
Много функций в MATLAB® могут взять элементы существующего массива и поместить их в различную форму или последовательность. Это может быть полезно для предварительной обработки ваших данных для последующих расчетов или анализа данных.
Изменение
reshape функционируйте изменяет размер и форму массива. Например, измените форму матрицы 3 на 4 к матрице 2 на 6.
A = [1 4 7 10; 2 5 8 11; 3 6 9 12]
A = 3×4 1 4 7 10 2 5 8 11 3 6 9 12
B = reshape(A,2,6)
B = 2×6 1 3 5 7 9 11 2 4 6 8 10 12
Пока число элементов в каждой форме то же самое, можно изменить их в массив с любым количеством размерностей. Используя элементы от A , создайте 2 2 3 многомерными массивами.
C = reshape(A,2,2,3)
C = C(. 1) = 1 3 2 4 C(. 2) = 5 7 6 8 C(. 3) = 9 11 10 12
Транспонирование и зеркальное отражение
Общая задача в линейной алгебре состоит в том, чтобы работать с транспонированием матрицы, которая превращает строки в столбцы и столбцы в строки. Для этого используйте transpose функционируйте или .’ оператор.
Создайте 3х3 матрицу и вычислите транспонировать.
A = magic(3)
A = 3×3 8 1 6 3 5 7 4 9 2
B = A.'
B = 3×3 8 3 4 1 5 9 6 7 2
Подобный оператор ‘ вычисляет сопряженное транспонирование для комплексных матриц. Эта операция вычисляет сопряженное комплексное число каждого элемента и транспонирует его. Создайте комплексную матрицу 2 на 2 и вычислите ее сопряженное транспонирование.
A = [1+i 1-i; -i i]
A = 2×2 complex 1.0000 + 1.0000i 1.0000 - 1.0000i 0.0000 - 1.0000i 0.0000 + 1.0000i
B = A'
B = 2×2 complex 1.0000 - 1.0000i 0.0000 + 1.0000i 1.0000 + 1.0000i 0.0000 - 1.0000i
flipud инвертирует строки матрицы в направлении «сверху вниз» и fliplr инвертирует столбцы в направлении «слева направо».
A = [1 2; 3 4]
A = 2×2 1 2 3 4
B = flipud(A)
B = 2×2 3 4 1 2
C = fliplr(A)
C = 2×2 2 1 4 3
Перемена и вращение
Можно переключить элементы массива определенным числом положений с помощью circshift функция. Например, создайте матрицу 3 на 4 и переключите ее столбцы направо 2. Второй аргумент [0 2] говорит circshift переключать строки 0 мест и переключать столбцы 2 места направо.
A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A = 3×4 1 2 3 4 5 6 7 8 9 10 11 12
B = circshift(A,[0 2])
B = 3×4 3 4 1 2 7 8 5 6 11 12 9 10
Переключать строки A 1 и сохраняют столбцы, задают второй аргумент как [-1 0] .
C = circshift(A,[-1 0])
C = 3×4 5 6 7 8 9 10 11 12 1 2 3 4
rot90 функция может вращать матрицу против часовой стрелки 90 градусами.
A = [1 2; 3 4]
A = 2×2 1 2 3 4
B = rot90(A)
B = 2×2 2 4 1 3
Если вы вращаетесь еще 3 раза при помощи второго аргумента, чтобы задать количество вращений, вы заканчиваете с исходным матричным A .
C = rot90(B,3)
C = 2×2 1 2 3 4
Сортировка
Сортировка данных в массиве является также ценным инструментом, и MATLAB предлагает много подходов. Например, sort функциональные виды элементы каждой строки или столбца матрицы отдельно в порядке возрастания или убывания. Создайте матричный A и вид каждый столбец A в порядке возрастания.
A = magic(4)
A = 4×4 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
B = sort(A)
B = 4×4 4 2 3 1 5 7 6 8 9 11 10 12 16 14 15 13
Сортировка каждой строки в порядке убывания. Второе значение аргумента 2 указывает, что вы хотите отсортировать построчный.
C = sort(A,2,'descend')
C = 4×4 16 13 3 2 11 10 8 5 12 9 7 6 15 14 4 1
Чтобы отсортировать целые строки или столбцы друг относительно друга, используйте sortrows функция. Например, отсортируйте строки A в порядке возрастания согласно элементам в первом столбце. Положения изменения строк, но порядок элементов в каждой строке сохраняются.
D = sortrows(A)
D = 4×4 4 14 15 1 5 11 10 8 9 7 6 12 16 2 3 13
Похожие темы
- Удаление строк или столбцов из матрицы
- Индексация массива
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Поменяйте местами элементы первой и последней строк в матрице с помощью Python
В этой статье мы изучим программу на Python для обмена элементами первой и последней строк в матрице.
Используемый метод
- Использование временной переменной (с использованием вложенных циклов)
- Использование оператора замены («, ») (без использования циклов)
- Использование функций pop(),insert() иappend().
Метод 1: использование временной переменной (с использованием вложенных циклов)
Алгоритм (шаги)
Ниже приведены алгоритмы/шаги, которые необходимо выполнить для выполнения желаемой задачи. −
- Создайте функцию swapFirstandLastRow(), чтобы поменять местами первую и последнюю строки входной матрицы, приняв входную матрицу, строки и столбцы в качестве аргументов.
- Пройдитесь по строкам и столбцам матрицы и поменяйте местами элементы первой и последней строки, используя временную переменную.
- Создайте переменную для хранения входной матрицы. Создайте переменную для хранения входного количества строк матрицы.
- Создайте еще одну переменную для хранения входного количества столбцов матрицы.
- Вызовите определенную выше функцию swapFirstandLastRow(), передав ей входную матрицу, строки и столбцы, чтобы поменять местами первую и последнюю строки.
- Распечатайте результирующую матрицу после замены первой и последней строк входной матрицы путем обхода строк и столбцов с использованием вложенного цикла for.
Пример
Следующая программа меняет местами первую и последнюю строки входной матрицы, используя временную переменную и вложенные циклы:
# function to swap the first and last rows of an input matrix # by accepting input matrix, rows, and columns as arguments def swapFirstandLastRow(inputMatrix, rows, cols): # Swapping first and last row elements using temp variable for p in range(rows): temp = inputMatrix[0][p] inputMatrix[0][p] = inputMatrix[rows-1][p] inputMatrix[rows-1][p] = temp # input matrix inputMatrix = [[5, 1, 3], [9, 6, 8], [4, 2, 7]] # input no of rows of a matrix rows = 3 # input no of columns of a matrix cols = 3 # calling the above-defined swapFirstandLastRow() function # by passing input matrix, rows, and columns to it swapFirstandLastRow(inputMatrix, rows, cols) print("Matrix after interchanging first and last rows:") # traversing through the rows of a matrix for p in range(rows): # Traversing through the columns of a current row for q in range(cols): #printing the corresponding element at the current row and column of the matrix print(inputMatrix[p][q], end=" ") # Printing a new line print()
Выход
При выполнении вышеуказанная программа сгенерирует следующий вывод:
Matrix after interchanging first and last rows: 4 2 7 9 6 8 5 1 3
Способ 2: использование оператора замены («, ») (без использования циклов)
Пример
Следующая программа меняет местами первую и последнюю строки входной матрицы без использования цикла и оператора (,) —
# input matrix inputMatrix = [[5, 1, 3], [9, 6, 8], [4, 2, 7]] # Swapping first and last rows using the (,) operator inputMatrix[0], inputMatrix[-1] = inputMatrix[-1], inputMatrix[0] # input no of rows of a matrix rows = 3 # input no of columns of a matrix cols = 3 print("Matrix after interchanging first and last rows:") # traversing through the rows of a matrix for p in range(rows): # Traversing through the columns of a current row for q in range(cols): # Printing the corresponding element at the current row & column print(inputMatrix[p][q], end=" ") print()
Выход
При выполнении вышеуказанная программа сгенерирует следующий вывод:
Matrix after interchanging first and last rows: 4 2 7 9 6 8 5 1 3
Способ 3. Использование функций pop(),insert() иappend().
Алгоритм (шаги)
Ниже приведены алгоритмы/шаги, которые необходимо выполнить для выполнения желаемой задачи. −
- Используйте отрицательную индексацию, чтобы получить последнюю строку матрицы.
- Используйте положительную индексацию, чтобы получить первую строку матрицы.
- Используйте функцию pop() (удаляет последний элемент из списка и возвращает его), чтобы удалить последнюю строку матрицы.
- Используйте функцию pop(), передав индекс как 0, чтобы удалить первую строку матрицы.
- Используйте функцию insert() (вставляет значение по указанному индексу), чтобы вставить последнюю строку с индексом 0 (первая строка).
- Используйте функцию append() (добавляет элемент в список в конце), чтобы добавить в конец первую строку матрицы.
- Распечатайте результирующую матрицу после замены первой и последней строк входной матрицы путем обхода строк и столбцов с использованием вложенного цикла for.
Пример
Следующая программа меняет местами первую и последнюю строки входной матрицы с помощью функций pop(), Insert() и Append():
# input matrix inputMatrix = [[5, 1, 3], [9, 6, 8], [4, 2, 7]] # Getting the last row of a matrix last_row = inputMatrix[-1] # Getting the first row of a matrix first_row = inputMatrix[0] # Removing the last row of a matrix inputMatrix.pop() # Removing the first row of a matrix inputMatrix.pop(0) # Inserting the last row at the index 0(first row) inputMatrix.insert(0, last_row) # Appending(Adding at the end) the first row of a matrix at the end inputMatrix.append(first_row) # input no of rows of a matrix rows = 3 # input no of columns of a matrix cols = 3 print("Matrix after interchanging first and last rows:") # traversing through the rows of a matrix for p in range(rows): # Traversing through the columns of a current row for q in range(cols): #printing the corresponding element at the current row and column of the matrix print(inputMatrix[p][q], end=" ") print()
Выход
При выполнении вышеуказанная программа сгенерирует следующий вывод:
Matrix after interchanging first and last rows: 4 2 7 9 6 8 5 1 3
Заключение
В этой статье мы узнали, как поменять местами первый и последний элементы матрицы, используя три различных подхода: использование временной переменной, оператора (,) и таких методов, как pop() и Insert(). Мы также узнали, как использовать функции pop() и Insert() для удаления и добавления (вставки) строк в матрицу. Мы научились менять местами две переменные/итерации с помощью оператора (,).
Все права защищены. © Linux-Console.net • 2019-2023