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

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

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

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

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

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

Pascal


const
N = 3; M = 6;
var
arr: array[1..N,1..M] of byte;
i,j,a,b,buff: byte;
begin
randomize;
for i:=1 to N do begin
for j:=1 to M do begin
arr[i,j] := random(4);
write(arr[i,j]:3);
end;
writeln;
end;
write('Какие столбцы поменять местами: ');
readln(a,b);
for i:=1 to N do begin
buff := arr[i,a];
arr[i,a] := arr[i,b];
arr[i,b] := buff;
end;
for i:=1 to N do begin
for j:=1 to M do
write(arr[i,j]:3);
writeln;
end;
end.



2 0 2 1 1 2
2 1 1 1 0 2
3 3 1 2 3 2
Какие столбцы поменять местами: 2 6
2 2 2 1 1 0
2 2 1 1 0 1
3 2 1 2 3 3
Язык Си

поменять местами столбцы матрицы c++

#include < stdio.h>
#define M 10
#define N 5
main() {
int a[N][M];
int i, j, n1, n2, ch;
srand(time(NULL));
for (i=0; i< N; i++) {
for (j=0; j< M; j++) {
a[i][j] = rand() % 10;
printf("%5d", a[i][j]);
}
printf("\n");
}
printf("Поменять столбцы: ");
scanf("%d",&n1);
scanf("%d",&n2);
for (i=0; i< N; i++) {
ch = a[i][n1-1];
a[i][n1-1] = a[i][n2-1];
a[i][n2-1] = ch;
}
for (i=0; i< N; i++) {
for (j=0; j< M; j++) {
printf("%5d", a[i][j]);
}
printf("\n");
}
}



0 0 5 1 4 1 8 8 5 3
8 0 5 8 4 3 0 6 0 8
3 2 1 4 9 8 6 6 2 7
7 2 7 2 6 4 6 4 2 1
9 3 1 7 1 8 0 4 6 0
Поменять столбцы: 7 8
0 0 5 1 4 1 8 8 5 3
8 0 5 8 4 3 6 0 0 8
3 2 1 4 9 8 6 6 2 7
7 2 7 2 6 4 4 6 2 1
9 3 1 7 1 8 4 0 6 0
Python


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])



[2, 1, 2, 2, 1, 0, 2, 1, 0, 1]
[1, 1, 1, 1, 1, 1, 2, 2, 2, 1]
[1, 1, 0, 1, 1, 1, 2, 0, 0, 1]
[0, 0, 0, 2, 0, 0, 1, 2, 1, 2]
[1, 0, 0, 1, 2, 0, 2, 1, 1, 0]
Один столбец: 3
Другой столбец: 10
[2, 1, 1, 2, 1, 0, 2, 1, 0, 2]
[1, 1, 1, 1, 1, 1, 2, 2, 2, 1]
[1, 1, 1, 1, 1, 1, 2, 0, 0, 0]
[0, 0, 2, 2, 0, 0, 1, 2, 1, 0]
[1, 0, 0, 1, 2, 0, 2, 1, 1, 0]
КуМир

алг поменять столбцы местами
нач
цел 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
кц
вывод нс
кц
кон



4 7 6 9 3 8
1 5 3 4 5 6
3 3 9 9 5 0
1 2 1 5 7 7
1
6
8 7 6 9 3 4
6 5 3 4 5 1
0 3 9 9 5 3
7 2 1 5 7 1

Basic-256


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



0 7 0 1 3 8 3 8
0 9 4 1 7 5 9 7
2 3 4 6 4 0 1 6
3
7
0 7 3 1 3 8 0 8
0 9 9 1 7 5 4 7
2 3 1 6 4 0 4 6

Оцените статью
Добавить комментарий