Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
Unit312
0 / 0 / 0
Регистрация: 30.05.2015
Сообщений: 35
#1

Работа с многомерными массивами - Lazarus

15.06.2016, 15:22. Просмотров 181. Ответов 5
Метки нет (Все метки)

Есть несколько заданий.
На одном запоролся совсем - час уже не могу решить...

Задача такая: дан массив a[i,j] N*N (N=5)
Заполняется вручную через процедуру.
Нужно найти минимальный и максимальный элементы и поменять их местами...
Найти вроде находит, но менять не хочет...

HELP PLEASE!

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
const
    n=5;
 type
   t=array[1..n,1..n]of integer;
 var
   a:t;
procedure vvod(var b:t);
   var
     i,j:integer;
begin
   for i:=1 to n do
    for j:=1 to n do
     a[i,j]:=strtoint(form7.StringGrid1.cells[j-1,i-1]);
{ неудачная попытка приспособить рандомное заполнение...
Randomize;
  for i:=1 to n do
    for j:=1 to n do
    a[i,j] := IntToStr(RandomRange(-25,25)) }
end;
 
procedure vivod(var b:t);
   var
     i,j:integer;
begin
   for i:=1 to n do
    for j:=1 to n do
     form7.StringGrid2.cells[j-1,i-1]:=inttostr(a[i,j]);
end;
 
procedure TForm7.BitBtn1Click(Sender: TObject);
var
     i,j,x,y,min,max:integer;
begin
    vvod(a);
//поиск min и max
    min := a[1,1];
    max := min;
        for i := 1 to n do
        for j := 1 to n do
             if (a[i,j] < min) then min := a[i,j];
             if (a[i,j] > max) then max := a[i,j];
             edit1.text:=inttostr(min);  //для интереса вывожу min и max в edit-ы
             edit2.text:=inttostr(max);  
 {
попытался заменить - ничего не меняет...
for i:=1 to n do
    for j:=1 to n do
    begin
        x:=min;
        min:=max;
        max:=x;
    end; 
}
 
    vivod(a);
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2016, 15:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с многомерными массивами (Lazarus):

Работа с одномерными массивами
Дорогие, программисты. Помогите, пожалуйста, выполнить задание. 1.Дан массив...

Работа с файлами и массивами
Задача состоит в том чтоб считать 30 файлов в каждом файле 24 значения....

Работа с вещественными числами и массивами
Итак, на форме расположено поле для ввода TEdit и кнопка “добавить”....

Работа с двумерными массивами и процедурами
Ребят надо запилить вот такую штуку В отделе Y есть 15 сотрудников, а в G -...

Работа с многомерными массивами
Привет всем. Нужна ваша помощь. Помогите разобраться с заданием. Не могу никак...

Программа для работы с многомерными массивами
Задача состоит в следующем: необходимо написать программу, которая могла бы...

5
Kitayets
334 / 288 / 102
Регистрация: 09.09.2011
Сообщений: 1,015
15.06.2016, 15:52 #2
1. искать надо не сами значения - а их координаты i,j
2. поменять в массиве
3. вывести

либо при выводе проверять все значения на соответствие с min/max


ну и рандомный ввод не работает т.к. там inttostr явно лишний.
1
Unit312
0 / 0 / 0
Регистрация: 30.05.2015
Сообщений: 35
15.06.2016, 16:23  [ТС] #3
Kitayets, а как получить координаты элемента?...
0
Puporev
Модератор
54136 / 41769 / 28880
Регистрация: 18.05.2008
Сообщений: 98,311
15.06.2016, 16:38 #4
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
imin:=1;
jmin:=1;
imax:=1;
jmax:=1;
for i := 1 to n do
for j := 1 to n do
 begin
  if a[i,j] <a[imin,jmin] then
   begin
    imin:=i;;
    jmin:=j;
   end;
 if a[i,j]>a[imax,jmax] then
  begin
   imax:=i;
   jmax:=j;
  end;
..................
x:=a[imax,jmax];
a[imax,jmax]:=a[imin,jmin];
a[imin,jmin]:=x;
1
Unit312
0 / 0 / 0
Регистрация: 30.05.2015
Сообщений: 35
15.06.2016, 17:00  [ТС] #5
спасибо!

И ещё тогда подскажите - как сделать так, чтоб при рандомном заполнении (я его починил) цифры в ячейках НЕ повторялись?
0
Puporev
Модератор
54136 / 41769 / 28880
Регистрация: 18.05.2008
Сообщений: 98,311
15.06.2016, 17:34 #6
Если массив размером до 256 (16х16) его можно заполнить числами от -127 до 128 для чего использовать множество.
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
const n=5;
var i,j,f:byte;
    a:array[1..n,1..n]of integer;
    s:set of byte;
begin
randomize;
s:=[];
for i:=1 to n do
for j:=1 to n do
 begin
  repeat
  f:=random(256);
  until not (f in s);
  s:=s+[f];
  a[i,j]:=f-127;{минимальный набор чисел от -127 до 128}
 end;
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:5);
  writeln;
 end;
readln
end.
Добавлено через 1 минуту
А можно по другому, например так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const n=5;
var i,j,k,l,f:integer;
    a:array[1..n,1..n]of integer;
begin
randomize;
for i:=1 to n do
for j:=1 to n do
 repeat
  f:=0;
  a[i,j]:=-127+random(256);
  for k:=1 to n do
  for l:=1 to n do
  if a[i,j]=a[k,l] then inc(f);
 until f=1;
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
end.
0
15.06.2016, 17:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2016, 17:34
Привет! Вот еще темы с решениями:

Работа с массивами
Найти произведение всех чисел заданного массива меньших 50 и сложить с...

Работа с массивами!
1. Составить прогу. генерирующую массив содержащий только те элементы...

Работа с массивами.
Приветствую. Возникли две задачки по делфи, решения к которым найти так и не...

Работа с одномерными массивами
1. Дан массив целых чисел из n элементов, заполненный случайным образом...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru