В двумерном массиве по запросу поменять два заданных столбца или две строки? Пожалуйста))

0 голосов
102 просмотров

В двумерном массиве по запросу поменять два заданных столбца или две строки? Пожалуйста))


Информатика (244 баллов) | 102 просмотров
0

так столбца или строки?

0

В смысле, местами поменять? или значения новые ввести?

0

 а чтоб предлагалось строки поменять так никак?

0

чтобы нужно было выбрать, столбцы или строки?

Дано ответов: 2
0 голосов
Правильный ответ

// PascalABC.NET 3.1, сборка 1172 от 19.02.2016
begin
  var m,n:integer;
  Write('Введите количество строк и столбцов массива: ');
  Readln(m,n);
  var a:=MatrixRandom(m,n,10,99);
  for var i:=0 to m-1 do begin
    for var j:=0 to n-1 do Print(a[i,j]);
    Println
    end;
  var c:char;
  Writeln('1- поменять местами строки, 2- столбцы: ');
  Readln(c);
  case c of
  '1': begin
    var r1,r2:integer;
    Writeln('Введите пару номеров строк: '); Read(r1,r2);
    if (r1<=m) and (r2<=m) and (r1<>r2) and (r1*r2>0) then begin
      Dec(r1); Dec(r2);
      for var j:=0 to n-1 do Swap(a[r1,j],a[r2,j]);
        for var i:=0 to m-1 do begin
          for var j:=0 to n-1 do Print(a[i,j]);
          Println
        end
      end
    else Writeln('Введены недопустимые номера строк')
    end;
  '2': begin
    var c1,c2:integer;
    Writeln('Введите пару номеров столбцов: '); Read(c1,c2);
    if (c1<=n) and (c2<=n) and (c1<>c2) and (c1*c2>0) then begin
      Dec(c1); Dec(c2);
      for var i:=0 to m-1 do Swap(a[i,c1],a[i,c2]);
      for var i:=0 to m-1 do begin
          for var j:=0 to n-1 do Print(a[i,j]);
          Println
        end
      end
    else Writeln('Введены недопустимые номера столбцов')
    end;
  else Writeln('Массив не меняется')
  end
end.

Тестовые решения:
Введите количество строк и столбцов массива: 6 4
63 32 31 99
14 92 54 37
79 90 93 95
41 55 95 26
98 44 57 13
80 45 61 24
1- поменять местами строки, 2- столбцы:
1
Введите пару номеров строк:
2 5
63 32 31 99
98 44 57 13
79 90 93 95
41 55 95 26
14 92 54 37
80 45 61 24

Введите количество строк и столбцов массива: 3 5
47 17 78 15 37
35 73 60 31 91
13 17 92 95 88
1- поменять местами строки, 2- столбцы:
2
Введите пару номеров столбцов:
1 5
37 17 78 15 47
91 73 60 31 35
88 17 92 95 13

Введите количество строк и столбцов массива: 3 3
95 60 52
67 35 28
31 94 60
1- поменять местами строки, 2- столбцы:
3
Массив не меняется

Введите количество строк и столбцов массива: 4 3
12 53 74
80 20 44
64 50 43
42 13 35
1- поменять местами строки, 2- столбцы:
1
Введите пару номеров строк:
4 7
Введены недопустимые номера строк

(142k баллов)
0

Можно сделать чтобы окно ввода не закрывалось после нажантия на энтер

0

Это как? Сам принцип интерфейса в Паскале такой: он имитирует консоль.

0

мне нужно чтобы в конце он спросил закончить программу или продолжить? (все так сложно )

0

Значит, сделайте внешний цикл Repeat... until

0 голосов

Var
a: array[1..4, 1..4] of integer;
i, j, x, y, n: integer;
s: string;
begin
for i:=1 to 4 do
for j:=1 to 4 do
read(a[i, j]);
writeln('Введите "столбцы", чтобы поменять столбцы, или "строки", чтобы поменять строки');
readln(s);
writeln('Введите номера столбцов/строк');
readln(x, y);
if s='столбцы' then
for i:=1 to 4 do
begin
n := a[i, x];
a[i, x] := a[i, y];
a[i, y] := n;
end;
if s='строки' then
for i:=1 to 4 do
begin
n := a[x, i];
a[x, i] := a[y, i];
a[y, i] := n;
end;
for i:=1 to 4 do
begin
for j:=1 to 4 do
write(a[i, j], ' ');
writeln;
end;
end.


image
(15.5k баллов)
0

а чтоб предлагалось не только столбцы поменять но и строки так возможно сделать?

0

сделал же

0

он меняет столбцы а строки не предлагает(

0

Я изменил ответ

0

а как вводить?

0

строки и столбцы который поменять нужно?

0

Блин, программа же всё пишет, что вводить! Сначала массив, потом "строки" или "столбцы", потом два значения - индексы столбцов, которые нужно поменять!

0

Индексы столбцов или строк