Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.03.2016
Сообщений: 3
1

Функция, меняющая местами указанные строки в матрице

22.03.2016, 13:15. Показов 630. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Pascal
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
program mass;
 
type
  mas = array[1..10, 1..10] of integer;
 
var
  n, i, j, x: integer;
  m: mas;
 
function init(a: mas; cnt: integer): mas;
var
  k, h: integer;
begin
  for k := 1 to n do
    for h := 1 to n do
      a[k, h] := 0;
end;
 
function rand(a: mas; cnt: integer): mas;
var
  v, w: integer;
begin
  for v := 1 to n do
    for w := 1 to n do
      a[v, w] := Random(100);
  Rand := a;
end;
 
function vvod(a: mas; cnt: integer): mas;
var
  r, t: integer;
begin
  for r := 1 to n do
    for t := 1 to n do
    begin
      writeln(' m[', r, ',', t, ']=');
      read(a[r, t]);
      vvod:=a;
    end;
end;
 
function print(a: mas; cnt: integer): mas;
var
  k1, k2: integer;
begin
  for k1 := 1 to n do
  begin
    writeln;
    for k2 := 1 to n do
      write(' a[', k1, ',', k2, ']=', a[k1, k2]);
  end;
end;
 
 
function Zamena(a:mas; cnt: integer): mas;
 
 
 
begin
  Writeln('Введите размерность квадратного массива, n');
  Readln(n);
  repeat
    
    writeln;
    writeln('1.)Заполнить массив вручную');
    writeln('2.)Процедура инициализации');
    writeln('3.)Заполнить массив рандомно');
    writeln('4.)Процедура вывода массива');
    writeln('5.)Выход');
    writeln('6.)Замена указанных строк местами');
    writeln('Введите цифру операции');
    
    readln(x);
    case x of
      1: m := vvod(m, n);
      2: m := init(m, n);
      3: m := rand(m, n);
      4: m := print(m, n);
      6:
    end;
  until x = 5;
end.


имеется программа. не пойму никак, как сделать функцию, в которой будет происходит следующая операция: когда человек нажмет кнопку 6- у него программа должна спросить, какие строки местами в матрице он хотел бы поменять;с последующим выводом результата на экран. кто сможет понятно объяснить и написать данную функцию замены?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2016, 13:15
Ответы с готовыми решениями:

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

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

Функция меняющая местами адреса
В функции поменял местами, но ничего не изменилось. int main() { int a = { 1, 2 }; int*...

Функция,меняющая 1и 2 элемент местами
Уважаемые программисты,помогите написать программу, в которой функция меняет местами 1 и 2 ...

1
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
24.03.2016, 06:23 2
Работает обработка ошибочного ввода, т.е. на вход программе можно подавать любые данные.
Pascal
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
type
  mas = array [1..100, 1..100] of integer;
 
function masInput(n : Integer) : mas;
var otvet : String;
begin
  for var Row := 1 to n do
    for var Col := 1 to n do
      repeat
        otvet := ReadLnString('[' + Row + ',' + Col + '] =');
      until TryStrToInt(otvet, Result[Row, Col]);
end;
 
function masRandom(n : Integer) : mas;
begin
  Randomize;
  for var Row := 1 to n do
    for var Col := 1 to n do
      Result[Row, Col] := Random(0, 99);
end;
  
procedure masOutput(n : Integer; m : mas; msg : String := '');
begin
  WriteLn;
  if msg.Length > 0 then WriteLn(msg);
  var d := 0;
  for var Row := 1 to n do
    for var Col := 1 to n do
      d := max(d, m[Row, Col].ToString.Length);
  d += 1;
  for var Row := 1 to n do
    begin
      for var Col := 1 to n do
        Write(m[Row, Col]:d);
      WriteLn;
    end;
end;
 
procedure masSwapRows(Row1, Row2, n : Integer; var m : mas);
begin
  for var Col := 1 to n do
    Swap(m[Row1, Col], m[Row2, Col]);
end;
 
var
  n : Integer; // Размер массива
  otvet : String; // Вводимый ответ
  m : mas; // Массив
  Row1, Row2 : Integer; // Номера строк для обмена
  
begin
  repeat
    otvet := ReadLnString('Введите размерность квадратного массива до 100: n =').Trim(#32);
    tryStrToInt(otvet, n);
    if (n < 1) or (n > 100) then WriteLn(NewLine, 'Ошибка ввода числа! Повторите.');
  until (n > 0) and (n < 101);
    
  WriteLn;
  repeat
    WriteLn('Выберите способ заполнения:');
    WriteLn('1 - Заполнить массив вручную');
    WriteLn('2 - Заполнить массив случайными числами');
    otvet := ReadLnString('Ваш выбор:').Trim(#32);
    case otvet of
      String('1') : m := masInput(n);
      String('2') : m := masRandom(n);
    else
      WriteLn(NewLine, 'Ошибочный ввод! Повторите.');
    end;
  until (otvet = '1') or (otvet = '2');
 
  masOutput(n, m, 'Получен следующий массив:');
  
  WriteLn;
  repeat
    otvet := ReadLnString('Введите через пробел номера строк для замены или „0“ для завершения работы:').Trim(#32);
    var w := otvet.ToWords(#32);
    if (w.Count = 1) and (w[0] = '0') then
      otvet := 'the end' // если введен один „0“
    else
      if w.Count <> 2 then
        WriteLn(NewLine, 'Неверное число параметров! Повторите ввод.') // если введено не два значения
    else
      if not( tryStrToInt(w[0], Row1) and tryStrToInt(w[1], Row2) ) then
        WriteLn(NewLine, 'Неверные номера строк! Повторите ввод.') // введены не числовые данные
    else
      if (Row1 < 1) or (Row1 > n) or (Row2 < 1) or (Row2 > n) then
        WriteLn(NewLine, 'Неверные номера строк! Повторите ввод.') // номера несуществующих строк
    else
      if Row1 = Row2 then
        WriteLn(NewLine, 'Менять одну и ту-же строку не имеет смысла! Повторите ввод.')
    else 
      begin // Можно поменять строки
        masSwapRows(Row1, Row2, n, m);
        masOutput(n, m, 'Результаты обмена строк ' + Row1 + ' и ' + Row2 + ':');
      end;
  until otvet = 'the end';
  
  WriteLn(NewLine, 'Программа завершила свою работу.');
end.
0
24.03.2016, 06:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2016, 06:23
Помогаю со студенческими работами здесь

Функция меняющая значения переменных местами
Есть две переменные: k=10, l=20. нужно написать функцию меняющую значения этих переменных местами.

Функция, рекурсивно меняющая местами элементы списка
Добрый день. Есть задача: составиться функцию: void reverse(Node* header); которая рекурсивно...

Функция меняющая местами значения двух чисел
Добрый день помогите пожалуйста. Даны вещественные числа a, b. Составить программу, содержащую...

Функция меняющая местами 2 переменные на выбор пользователя
есть 7 переменных функцию которая меняет местами 2 переменные на выбор пользователя с помощью...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru