Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 05.01.2010
Сообщений: 12
1

Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей

05.01.2010, 19:13. Показов 3081. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помагиет рещить задачу плиз заранее спс......
Дана действительная квадратная матрица порядка n все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей...(прошу писать код задачи полностью с указанием нужного кол меток и полей ввода и т.п.)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2010, 19:13
Ответы с готовыми решениями:

Наибольший элемент среди стоящих на главной и побочной диагоналях поменять местами с элементом, стоящим на пересечении этих диагоналей.
2) В квадратном массиве из n строк, где n- нечетное число, все элементы различны. Наибольший...

Массив: Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами со стоящим на пересечении этих диагоналей
Дана действительная,квардратичная матрица порядка n9,все элементы которой различны. Найти...

Наибольший элемент среди стоящих на главной и побочной диагоналях поменять местами с элементом , стоящим на пересичении этих диагоналей.
В квадратном массиве из n строк , где n - нечетное число , все элементы различны.Наибольший элемент...

Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять местами с элементом на их пересечении
Дана действительная квадратная матрица порядка N(N-не четное),все элементы которой различны.Найти...

1
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
06.01.2010, 14:22 2
Лучший ответ Сообщение было отмечено Sereggaa как решение

Решение

На форме кнопка и поле типа TMemo для показа исходных данных и результатов:
Delphi
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
const
  //Число строк и столбцов в массиве.
  N = 5;
var
  //Массив.
  Arr : array[1..N, 1..N] of Integer;
  //Индексы массива.
  i, j, i1, j1  : Integer;
  //Индексы, соответствующие максимальному элементу на главной и побочной диагоналях.
  IMax, JMax    : Integer;
  //Переменная для обмена значений в элементах массива.
  NumTmp        : Integer;
  //Строка для распечатки результатов.
  StrTmp        : String;
begin
 
  //Если N - чётное, то прерываем выполнение.
  if not Odd(N) then begin
    Raise Exception.Create('Число строк и столбцов массива чётное! Выполнение прервано.');
  end;
 
  //Очищаем Мемо.
  Memo1.Clear;
 
  //Инициализируем массив.
  //Заполняем массив возрастающими неповторяющимися значениями.
  NumTmp := -(N * N) div 2;
  for i := 1 to N do begin
    for j := 1 to N do begin
      Inc(NumTmp);
      Arr[i, j] := NumTmp;
    end;
  end;
 
  //Инициализируем генератор случайных чисел.
  Randomize;
  //Перемешиваем элементы в массиве.
  for i := 1 to N * N do begin
    i1 := 1 + Random(N); //Случайный индекс из диапазона 1..(0..N-1) = 1..N.
    j1 := 1 + Random(N);
    NumTmp := Arr[1, 1];
    Arr[1, 1] := Arr[i1, j1];
    Arr[i1, j1] := NumTmp;
  end;
 
  //Распечатка исходного массива.
  Memo1.Lines.Add('Исходный массив:');
  for i := 1 to N do begin
    StrTmp := '';
    for j := 1 to N do begin
      if StrTmp <> '' then begin
        StrTmp := StrTmp + Char(9);
      end;
      StrTmp := StrTmp + IntToStr( Arr[i, j] );
    end;
    Memo1.Lines.Add(StrTmp);
  end;
 
  //Решение задачи. Начало.
 
  //Поиск максимума на главной и побочной диагоналях.
  IMax := 1;
  JMax := 1;
  for i := 1 to N do begin
    //Главная диагональ.
    j := i;
    if Arr[i, j] > Arr[IMax, JMax] then begin
      IMax := i;
      JMax := j;
    end;
    //Вторая (побочная) диагональ.
    j := N + 1 - i;
    if Arr[i, j] > Arr[IMax, JMax] then begin
      IMax := i;
      JMax := j;
    end;
  end;
 
  //Меняем местами найденный масимальный элемент с элементом, расположенным
  //на пересечении диагоналей.
  //[i, i] - это координаты элемента, расположенного на пересечении диагоналей
  i := N div 2 + 1;
  NumTmp := Arr[IMax, JMax];
  Arr[IMax, JMax] := Arr[i, i];
  Arr[i, i] := NumTmp;
 
  //Решение задачи. Конец.
 
  //Распечатка результирующего массива.
  Memo1.Lines.Add('Результирующий массив:');
  for i := 1 to N do begin
    StrTmp := '';
    for j := 1 to N do begin
      if StrTmp <> '' then begin
        StrTmp := StrTmp + Char(9);
      end;
      StrTmp := StrTmp + IntToStr( Arr[i, j] );
    end;
    Memo1.Lines.Add(StrTmp);
  end;
 
end;
 
end.
Вложения
Тип файла: rar Matrix.rar (165.6 Кб, 79 просмотров)
0
06.01.2010, 14:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2010, 14:22
Помогаю со студенческими работами здесь

Поменять наибольший элемент среди стоящих на диагоналях с элементом, стоящим на пересечении диагоналей
Дана действительная квадратная матрица A порядок N, где N - заданное натуральное нечетное число....

Массив: Наибольший элемент среди стоящих на диагоналях поменять местами с элементом, стоящим на их пересечении.
В двухмерном массиве из n строк и n столбцов, где n - нечётное число, все элементы различны....

Найти наибольший элемент на главной и побочной диагоналях матрицы и поменять его с элементом на пересечении диагоналей
Дана матрица A(n×n), все элементы которой различны. Найти наибольший элемент среди стоящих на...

Найти максимальный элемент матрицы среди стоящих на диагоналях и поменять с элементом, стоящим на пересечении диагоналей
Дана матрица А(n m). n - нечетное , все элементы различные. Найти максимальный элемент среди...


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

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