Поменять местами строки в матрице c

Задача

Дана матрица (двумерный массив). Поменять местами две любые ее строки.

Решение

Пусть строки, которые требуется поменять местами задаются пользователем при выполнении программы. Обменять строки — это значит, каждый элемент одной строки надо поставить на то же место другой строки.

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

В числовой матрице поменять местами два столбца, т. е. все элементы одного столбца поставить на соответствующие им позиции другого, а его элементы второго переместить в первый.

Столбец матрицы определяется вторым индексом. Поэтому в цикле следует перебирать строки матрицы, т.е. переменная-счетчик будет использоваться в качестве первого индекса двумерного массива.

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

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

Если в языке программирования индексация массивов начинается с нуля, а столбцы указываются, исходя из их фактического положения в матрице (начиная с 1), то следует из переменных, в которых записаны номера столбцов, вычесть единицу перед их использованием в цикле.

from random import random
M = 10
N = 5
a = [ ]
for i in range ( N ) :
b = [ ]
for j in range ( M ) :
b. append ( round ( random ( ) * 2 ) )
a. append ( b )
print ( b )

Читайте также  Ростелеком подольск тарифы на интернет

c1 = int ( input ( "Один столбец: " ) ) — 1
c2 = int ( input ( "Другой столбец: " ) ) — 1

for i in range ( N ) :
a [ i ] [ c1 ] , a [ i ] [ c2 ] = a [ i ] [ c2 ] , a [ i ] [ c1 ]
print ( a [ i ] )

алг поменять столбцы местами
нач
цел M = 6 , N = 4
цел таб a [ 1 : N , 1 : M ]
цел i , j , c1 , c2 , b

нц для i от 1 до N
нц для j от 1 до M
a [ i , j ] := int ( rand ( 0 , 10 ) )
вывод a [ i , j ] : 3
кц
вывод нс
кц

ввод c1
ввод c2

нц для i от 1 до N
b := a [ i , c1 ]
a [ i , c1 ] := a [ i , c2 ]
a [ i , c2 ] := b
кц

нц для i от 1 до N
нц для j от 1 до M
вывод a [ i , j ] : 3
кц
вывод нс
кц
кон

M = 8
N = 3
dim a(N,M)
for i = 0 to N-1
for j=0 to M-1
a[i,j] = int(rand*10)
print a[i,j] + " " ;
next j
print
next i

input c1
input c2

for i=0 to N-1
buff = a[i,c1-1]
a[i,c1-1] = a[i,c2-1]
a[i,c2-1] = buff
next i

for i = 0 to N-1
for j=0 to M-1
print a[i,j] + " " ;
next j
print
next i

Дана матрица, в которой надо поменять строки и столбцы местами. Ниже код, который уже набросал, но он не меняет местами строки и столбцы.
Кто может объяснить, как правильно в с++ можно поменять строки и столбцы? Спасибо.

1 ответ 1

В код особо не вчитывался, но должно быть так:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками матрицы c++ или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.12.20.35703

Ссылка на основную публикацию
Adblock
detector