Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для МистерМеГа
3 / 3 / 0
Регистрация: 21.11.2013
Сообщений: 47

Использование матриц в качестве параметров в функциях

03.02.2014, 01:39. Показов 1408. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В квадратной матрице A(n*n) найти наибольший элемент среди элементов, расположенных на главной и побочной диагоналях, после чего обменять его местами с наименьшим элементом, смежным с пересечением этих диагоналей.
Примечание. Если n - нечетное, то на пересечении указанных диагоналей находится один элемент, при четном с точкой пересечения смежны 4 элемента.

Пожалуйста помогите.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.02.2014, 01:39
Ответы с готовыми решениями:

Использование массива в качестве параметров в функциях
Элементы массива X(n) представляют собой длины сторон треугольников a,b,c . Определить, сколько равносторонних треугольников можно...

Применение матриц в качестве параметров функции
Здравствуйте. Помогите, пожалуйста, в решении такой проблемы. Пишу простенькую программу по выводу матрицы на экран. В самой программе...

Использование делегатов в качестве параметров функции
Реализовать метод, вычисляющий значение функции с заданным диапазоном (интервалом для вычислений) и заданным шагом. Виды функций,...

1
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,380
03.02.2014, 17:15
Лучший ответ Сообщение было отмечено МистерМеГа как решение

Решение

Вот, разбирайтесь.
Кликните здесь для просмотра всего текста
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
const m = 15;
 
type mas = array [1..m, 1..m] of integer;
     el = record
            i: integer;
            j:integer
          end;
     
procedure entr(var x: mas; n: integer); //генерация массива, можно заменить на ввод
var i, j: integer;
begin
  for j := 1 to n do for i := 1 to n do x[i, j] := random(198) - 99
end;
 
procedure prnt(var x: mas; n: integer); //печать массива
var i, j: integer;
begin
  for j := 1 to n do
    begin
      for i := 1 to n do write(x[i, j]:4);
      writeln
    end
end;
 
function md(var x: mas; n: integer): el; //поиск максимума на диагоналях
var i, j, k: integer;
begin
  i := 1; //пока максимум x[1, 1]
  j := 1;
  for k := 1 to n do
    begin
      if x[k, k] > x[i, j] //ищем на главной
      then begin
        i := k;
        j := k
      end;
      if x[n - k + 1, k] > x[i, j] //ищем на побочной
      then begin
        i := n - k + 1;
        j := k
      end;
    end;
  md.i := i; //нашли, присвоили возвращаемому занчению функции
  md.j := j
end;
 
function am(var x: mas; n: integer): el; //поиск минимума вокруг перекрестья диагоналей
var i, j, im, jm: integer;
begin
  im := n div 2; //пока минимум левый верхний
  jm := n div 2; //можно jm := im; для оптимизации
  for i := n div 2 to n div 2 + 1 + n mod 2 do //с левого угла до правого
    for j := n div 2 to n div 2 + 1 + n mod 2 do //с верхнего угла до нижнего
      begin
        if not((n mod 2 = 1) and (i = n div 2 + 1) and (j = n div 2 + 1)) //центр пропускаем
          and ((x[i, j] < x[im, jm])) //ищем максимум
            then begin
              im := i;
              jm := j
            end
      end;
  am.i := im; //нашли, присвоили возвращаемому занчению функции
  am.j := jm
end;
 
var a: mas;
    n, i, j, t: integer;
    max, min: el;
 
begin
  randomize;
  repeat //ввод размерности массива
    write('n = ');
    readln(n);
    if (n < 2) or (n > m) then writeln('n out of range 2..', m, ', reenter.')
  until (n >= 2) and (n <= m);
  entr(a, n); //генерация (или ввод, если нужно) массива
  writeln('Source array:');
  prnt(a, n); //печать исходного массива
  max := md(a, n); //поиск максимума на диагоналях
  writeln('Max of diagonals: a[', max.i, ', ', max.j, '] = ', a[max.i, max.j]);
  min := am(a, n); //поиск минимума вокруг перекрестья диагоналей
  writeln('Min around diagonal crossing: a[', min.i, ', ', min.j, '] = ', a[min.i, min.j]);
  t := a[max.i, max.j]; //обмен
  a[max.i, max.j] := a[min.i, min.j];
  a[min.i, min.j] := t;
  writeln('Result:');
  prnt(a, n); //печать полученного массива
  readln //ждём-с...
end.
Всего Вам доброго. Успехов.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.02.2014, 17:15
Помогаю со студенческими работами здесь

Использование делегатов в качестве параметров функции
Реализовать метод, вычисляющий значение функции с заданным диапазоном (интервалом для вычислений) и заданным шагом. Виды функций,...

Использование функций в качестве формальных параметров
Помогите вычислить f(x)/g(x), где в качестве f(x) и g(x) могут быть четыре различные функции, возвращающие вещественные значения

Использование делегатов в качестве параметров функции
Реализовать метод, вычисляющий значение функции с заданным диапазоном (интервалом для вычислений) и заданным шагом. Виды функций,...

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

Использование в хранимке параметров в качестве названий таблиц
Все добрый день! В общем, передо мной стоит задача в хранимой процедуре в локальную переменную @M поместить результат выборки из таблицы,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru