|
Вопрос # 5 346/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Задание такое: (по массивам) Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами.
Не могу понять где прописал что то не так, меняет местами цифры не правильно, на форме расположены StringGrid, две кнопки, в первой кнопке прописан код на генерацию цифр, а во второй непосредственно код на перестановку элементов.
Приложение: Переключить в обычный режим- unit U_F_1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, Grids;
-
- type
- TF_1 = class(TForm)
- StringGrid1: TStringGrid;
- Button1: TButton;
- E_3: TEdit;
- L_3: TLabel;
- L_com_3: TLabel;
- L_4: TLabel;
- B_2: TButton;
- procedure Button1Click(Sender: TObject);
- procedure B_2Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- F_1: TF_1;
- const n=6;
- var
- m:array[1..n,1..n]of integer;
- i,j,index,k,max,buf:integer;
-
- implementation
-
- {$R *.dfm}
-
-
- procedure TF_1.Button1Click(Sender: TObject);
- {const n=6;
- var
- m:array[1..n,1..n]of integer;
- i,j,index,k,max,buf:integer; }
- begin
-
- randomize;
-
- for i:=1 to n do
- begin
-
- for j:=1 to n do
-
- begin
- m[i,j]:=random(10);
- StringGrid1.Cells[i-1,j-1] := FloatToStrF(m[i,j], ffFixed, 2, 0);
-
- end;
-
-
- end;
- max:=m[1,1];
- index:=1;
- for i:=1 to n do
- if m[i,i]>max then
- begin
- max:=m[i,i];
- index:=i;
-
-
- end;
-
-
- end;
-
- procedure TF_1.B_2Click(Sender: TObject);
- {const n=6;
- var
- m:array[1..n,1..n]of integer;
- i,j,index,k,max,buf:integer; }
- begin
-
- max:=m[1,1];
- index:=1;
- for i:=1 to n do
- if m[i,i]>max then
- begin
- max:=m[i,i];
- index:=i;
- end;
- repeat
- k:=StrToInt(E_3.Text);
- until k in [1..n];
- if index<>k then
- for i:=1 to n do
- begin
- buf:=m[index,i];
- m[index,i]:=m[k,i];
- m[k,i]:=buf;
-
- end;
- for i:=1 to n do
- begin
- for j:=1 to n do
- //StringGrid1.Cells[i-1,j-1] := inttostr(m[i,j]);
- StringGrid1.Cells[i-1,j-1] := FloatToStrF(m[i,j], ffFixed, 2, 0);
- end;
- end;
-
- end.
 |
Вопрос задал: Силиванов (статус: Посетитель)
Вопрос отправлен: 30 мая 2011, 19:59
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Мережников Андрей
Здравствуйте, Силиванов!
Решение в прилагаемом файле. Будут вопросы - пишите. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 4 июня 2011, 10:10
|
Мини-форум вопроса
Всего сообщений: 21; последнее сообщение — 4 июня 2011, 09:42; участников в обсуждении: 4.
Страницы: [1] [2] [Следующая »]
|
Мережников Андрей (статус: Абитуриент), 30 мая 2011, 20:22 [#1]:
почему:
1: ищете только по главной диагонали?
2: не ищете минимальный элемент?
3: почему местами меняется все подряд?
|
|
bugmenot (статус: 3-ий класс), 30 мая 2011, 20:30 [#3]:
внимание на строки 63, 84
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Мережников Андрей (статус: Абитуриент), 30 мая 2011, 20:33 [#4]:
да! и еще - прямоугольная матрица - не значит квадратная
|
|
Силиванов (статус: Посетитель), 30 мая 2011, 20:38 [#5]:
Сори, вот такое задание
Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным
номером m.
|
|
Мережников Андрей (статус: Абитуриент), 30 мая 2011, 20:40 [#6]:
Цитата (Силиванов):
Сори, вот такое задание
сильно похоже на первоначальный вопрос
|
|
Силиванов (статус: Посетитель), 30 мая 2011, 20:42 [#7]:
Там ещё есть Edit, вот это как раз та строчка, где задаётся номер строки перестановки - k:=StrToInt(E_3.Text);
|
|
Мережников Андрей (статус: Абитуриент), 30 мая 2011, 20:48 [#8]:
Цитата (Силиванов):
repeat k:=StrToInt(E_3.Text); until k in [1..n];
если в edit введете неподходящее значение, то здесь программа зациклиться и останавливать ее будете через три кнопки
|
|
Мережников Андрей (статус: Абитуриент), 30 мая 2011, 20:50 [#9]:
Цитата (Силиванов):
L_com_3.Caption:='Максимальный элемент'+#13+IntToStr(max); L_4.Caption:='Строка'+#13+IntToStr(index);
вот это надо вынести из цикла
|
|
Силиванов (статус: Посетитель), 31 мая 2011, 11:05 [#10]:
подскажите как исправить ошибку
|
|
Мережников Андрей (статус: Абитуриент), 31 мая 2011, 18:25 [#11]:
заменить
StringGrid1.Cells[i-1,j-1] := FloatToStrF(m[i,j], ffFixed, 2, 0);
на
StringGrid1.Cells[i-1,j-1] := FloatToStrF(m[j,i], ffFixed, 2, 0);
для StringGrid предусмотрена нумерация элементов (колонка, строка).
|
|
Силиванов (статус: Посетитель), 31 мая 2011, 22:27 [#12]:
не помогло, ребят помогите пож-та, достала меня эта задача и препад тоже
|
|
Силиванов (статус: Посетитель), 1 июня 2011, 10:14 [#14]:
не пойму почему в случайном порядке числа заменяются, а должны заменяться со строчкой с максимальным значениением главной диаганали на строчку которую ввожу в edit.
|
|
bugmenot (статус: 3-ий класс), 1 июня 2011, 12:07 [#15]:
почему матрица of integer, а в StringGrid попадает с помощью FloatToStr? O_o
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Силиванов (статус: Посетитель), 1 июня 2011, 12:12 [#16]:
исправил на inttostr, но всё равно так же
|
|
serox (статус: Посетитель), 1 июня 2011, 20:29 [#17]:
Вообще не понятно чего ты ищешь в своем коде)
Зачем искать строку?) Вроде надо только поменять наименьший и наибольший элементы...
That will be, you and do not learn, if never will try! ^__^
|
|
Силиванов (статус: Посетитель), 1 июня 2011, 21:50 [#18]:
вот такое задание
Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером m.
|
|
Силиванов (статус: Посетитель), 3 июня 2011, 20:10 [#19]:
никто не поможет?
|
|
serox (статус: Посетитель), 4 июня 2011, 00:46 [#20]:
А чего тут помогать то?) Задачка то вроде как простая) Найти максимальный элемент на диагонали. Поменять местами строки
That will be, you and do not learn, if never will try! ^__^
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|