Родились сегодня:
Rosiam


Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Модератор

723

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

326

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Академик

278

Россия, Санкт-Петербург


ID: 325460

CradleA

Мастер-Эксперт

211

Беларусь, Минск


ID: 400815

alexleonsm

6-й класс

130


ID: 400669

epimkin

Профессионал

120


ID: 401888

puporev

Профессор

111

Россия, Пермский край


8.8.15

09.05.2021

JS: 2.8.21
CSS: 4.5.5
jQuery: 3.6.0
DataForLocalStorage: 2021-05-12 02:46:03-standard


Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 159405

Раздел: Pascal / Delphi / Lazarus
Автор вопроса: Melen
Дата: 02.02.2009, 15:34 Консультация закрыта
Поступило ответов: 1

Здравсвуйте, помогите, пожалйста написать программу . Создать целочисленный двумерный массив А, имеющий строки и 4 столбца,с помощью генератора случайных чисел от 0-50, и поменять местами минимальные и максимальные элементы массива.

Ответ # 242726 от Micren
Здравствуйте, Melen!
Программа с краткими комментариями. Меняет первый встретившийся элемент с минимальным значением на первый встретившийся с максимальным значением.

Приложение:


Micren

Посетитель
02.02.2009, 16:01
Мини-форум консультации # 159405
Micren

1

= общий =    02.02.2009, 16:03

Вы написали имеющий строки и 4 столбца. Из условия не ясно сколько строк.

неизвестный

2

= общий =    02.02.2009, 16:13

4 строки и 4 столбца

Micren

3

= общий =    02.02.2009, 17:06

Так оно в программе и есть.

неизвестный

4

= общий =    02.02.2009, 17:08

ток та немного подругому

Micren

5

= общий =    02.02.2009, 17:27

Что по другому? Программа все делает согласно условию.

q_id

puporev

Профессор

ID: 401888

6

= общий =    02.02.2009, 17:36

Наверное Вам надо как попроще и без указателей, примерно так.

Код
uses crt;
const n=4;
var a:array[1..n,1..n] of byte;
    i,j,min,max,imin,jmin,imax,jmax,x:byte;
begin
clrscr;
randomize;
writeln('Ishodnaua matrica A:');
min:=50;max:=0;imin:=1;jmin:=1;imax:=1;jmax:=1;
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
       a[i,j]:=random(51);
       if a[i,j]<min then
          begin
            min:=a[i,j];
            imin:=i;
            jmin:=j;
          end
      else if a[i,j]>max then
          begin
            max:=a[i,j];
            imax:=i;
            jmax:=j;
          end;
      write(a[i,j]:4);
    end;
  writeln;
 end;
x:=a[imin,jmin];
a[imin,jmin]:=a[imax,jmax];
a[imax,jmax]:=x;
writeln('Rezultat:');
for i:=1 to n do
   begin
     for j:=1 to n do
     write(a[i,j]:4);
     writeln;
   end;
readln
end.

Micren

7

= общий =    02.02.2009, 17:48

Может надо было и без указателей написать. Только мне хотелось поменьше переменных вводить. Поэтому и указатели использовал.

q_id

puporev

Профессор

ID: 401888

8

= общий =    02.02.2009, 17:50

Поскольку задача уж очень простая и решение ее выглядит невзрачно, можно слегка усложнить ее и украсить, чтобы минимальный и максимальный элементы подсвечивались и будет хорошо видно, как они поменялись местами.

Код
uses crt;
const n=4;
var a:array[1..n,1..n] of byte;
    i,j,min,max,imin,jmin,imax,jmax,x:byte;
begin
clrscr;
randomize;
writeln('Ishodnaua matrica A:');
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(51);
min:=50;max:=0;imin:=1;jmin:=1;imax:=1;jmax:=1;
for i:=1 to n do
for j:=1 to n do
if a[i,j]<min then
  begin
    min:=a[i,j];
    imin:=i;
    jmin:=j;
  end
else if a[i,j]>max then
  begin
    max:=a[i,j];
    imax:=i;
    jmax:=j;
  end;
for i:=1 to n do
   begin
     for j:=1 to n do
       if (i=imin)and(j=jmin) then
         begin
          TextColor(14);
          write(a[i,j]:4);
         end
       else if (i=imax)and(j=jmax) then
         begin
          TextColor(12);
          write(a[i,j]:4);
         end
       else
         begin
          TextColor(15);
          write(a[i,j]:4);
         end;
      writeln;
  end;
x:=a[imin,jmin];
a[imin,jmin]:=a[imax,jmax];
a[imax,jmax]:=x;
writeln('Rezultat:');
for i:=1 to n do
   begin
     for j:=1 to n do
       if (i=imin)and(j=jmin) then
         begin
          TextColor(14);
          write(a[i,j]:4);
         end
       else if (i=imax)and(j=jmax) then
         begin
          TextColor(12);
          write(a[i,j]:4);
         end
       else
         begin
          TextColor(15);
          write(a[i,j]:4);
         end;
      writeln;
  end;
readln
end.

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

Лучшие эксперты раздела

puporev

Профессор

Рейтинг: 111

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 73

Степанов Иван /REDDS

4-й класс

Рейтинг: 1

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Асмик Гаряка

Советник

Рейтинг: 0

Орловский Дмитрий

Мастер-Эксперт

Рейтинг: 0