Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2016, 16:13   #1
arty444
Подтвердите свой е-майл
 
Регистрация: 03.11.2016
Сообщений: 5
По умолчанию помогите! после того как нашел min и max не могу их местами поменять!

Код:
program www;
const
  n = 4;
type
  a = array[1..n, 1..n] of integer;
type
  b = array[1..n, 1..n] of integer;
type
  c = array[1..n, 1..n] of integer;

var
  q: a;
  w: b;
  e: c;
  i, j, min, max: byte;

begin
  for i := 1 to n do 
  begin
    for j := 1 to n do 
    begin
      q[i, j] := random(15);
      write(q[i, j]:4);
    end;
    writeln;
  end;
  writeln;
  for i := 1 to n do 
  begin
    for j := 1 to n do 
    begin
      w[i, j] := random(15);
      write(w[i, j]:4);
    end;
    writeln;
  end;
  writeln;
  for i := 1 to n do 
  begin
    for j := 1 to n do 
    begin
      e[i, j] := q[i, j] * w[i, j];
      write(e[i, j]:4);
    end;
    writeln;
  end;
  writeln;
  max := e[1, 1];min := e[1, 1];
  for i := 1 to n do
    for j := 1 to n do
      if e[i, j] > max then max := e[i, j];
  if e[i, j] < min then min := e[i, j];
  writeln('Max: ', max);
  writeln('Min: ', min);
  readln;
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 03.11.2016 в 16:33.
arty444 вне форума Ответить с цитированием
Старый 03.11.2016, 16:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

зачем под каждый массив отдельный тип данных? a,b,c вроде как одинаковые!
и почему буквы экономите, идентификаторы зачем так безжалостно сокращать?!
и зачем использовать тип Byte, чем Вам Integer не угодил?
тем более, что массивы состоят из Integer, а вспомогательные переменные - Byte

и зачем заполнять три массива, если дальше работа идёт только с третьим?
или это задание такое хитрое?


что же касается сути вопроса - нужно искать ни минимальное, максимальное значение, а ИНДЕКСЫ минимального и максимального.
это просто:
вместо
Цитата:
Код:
max := e[1, 1];min := e[1, 1];
  for i := 1 to n do
    for j := 1 to n do
      if e[i, j] > max then max := e[i, j];
  if e[i, j] < min then min := e[i, j];
  writeln('Max: ', max);
  writeln('Min: ', min);
пишите
Код:
  max_row := 1; max_col := 1;
  min_row  := 1; min_col := 1;
  for i := 1 to n do
    for j := 1 to n do begin
        if e[i, j] > e[max_row, max_col] then begin   max_row := i; max_col := j; end;
        if e[i, j] < e[min_row, min_col]  then begin   min_row := i; min_col := j; end
    end;
  writeln('Max: ', e[max_row, max_col]);
  writeln('Min: ', e[min_row, min_col]);
теперь догадываетесь, как поменять местами min и max ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2016, 17:02   #3
arty444
Подтвердите свой е-майл
 
Регистрация: 03.11.2016
Сообщений: 5
По умолчанию опять что-то не так

Код:
program www;
const
  n = 4;
type
  a = array[1..n, 1..n] of integer;
type
  b = array[1..n, 1..n] of integer;
type
  c = array[1..n, 1..n] of integer;

var
  q: a;
  w: b;
  e: c;
  i, j, min, max: byte; max_row, min_row, max_col, min_col,t:integer;

begin
  for i := 1 to n do 
  begin
    for j := 1 to n do 
    begin
      q[i, j] := random(15);
      write(q[i, j]:4);
    end;
    writeln;
  end;
  writeln;
  for i := 1 to n do 
  begin
    for j := 1 to n do 
    begin
      w[i, j] := random(15);
      write(w[i, j]:4);
    end;
    writeln;
  end;
  writeln;
  for i := 1 to n do 
  begin
    for j := 1 to n do 
    begin
      e[i, j] := q[i, j] * w[i, j];
      write(e[i, j]:4);
    end;
    writeln;
  end;
  writeln;
 max_row := 1; max_col := 1;
  min_row  := 1; min_col := 1;
  for i := 1 to n do
    for j := 1 to n do begin
        if e[i, j] > e[max_row, max_col] then begin   max_row := i; max_col := j; end;
        if e[i, j] < e[min_row, min_col]  then begin   min_row := i; min_col := j; end
    end;
  writeln('Max: ', e[max_row, max_col]);
  writeln('Min: ', e[min_row, min_col]);
  t:=max_row;
  e[max_row, max_col]:=e[min_row, min_col];
  e[min_row, min_col]:=t;
  writeln;
  for i := 1 to n do 
  begin
    for j := 1 to n do 
    begin
      e[i, j] := q[i, j] * w[i, j];
      write(e[i, j]:4);
    end;
    writeln;
  end;
  readln;
  end.

Последний раз редактировалось arty444; 03.11.2016 в 17:10.
arty444 вне форума Ответить с цитированием
Старый 03.11.2016, 17:02   #4
arty444
Подтвердите свой е-майл
 
Регистрация: 03.11.2016
Сообщений: 5
По умолчанию

не меняет ничего
arty444 вне форума Ответить с цитированием
Старый 03.11.2016, 17:17   #5
arty444
Подтвердите свой е-майл
 
Регистрация: 03.11.2016
Сообщений: 5
По умолчанию

Цитата:
и зачем заполнять три массива, если дальше работа идёт только с третьим?
или это задание такое хитрое?

да, это задание такое
получить 3-ий массив при умножении первых 2-ух
arty444 вне форума Ответить с цитированием
Старый 03.11.2016, 17:18   #6
arty444
Подтвердите свой е-майл
 
Регистрация: 03.11.2016
Сообщений: 5
По умолчанию

а затем поменять max и min местами
arty444 вне форума Ответить с цитированием
Старый 03.11.2016, 17:30   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
не меняет ничего
А где вы меняли? Вы в переменную записали один из индексов, потом в максимальный элемент записали минимальный, а в минимальный сохраненный индекс.
p51x вне форума Ответить с цитированием
Старый 03.11.2016, 23:27   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Код:
t:=e[max_row, max_col];
  e[max_row, max_col]:=e[min_row, min_col];
  e[min_row, min_col]:=t;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать стек, найти min среди положительных, max среди отрицательных и поменять их местами (на C/C++) (ответ нужен сегодня) PHEDOR Помощь студентам 4 04.06.2014 16:18
Массивы. Поменять местами все min и max (даже если будет 4 -min и 1-max). Виталик124 Паскаль, Turbo Pascal, PascalABC.NET 6 19.02.2014 22:44
Одномерный массив(найти max и min и поменять их местами в массиве) Monry Паскаль, Turbo Pascal, PascalABC.NET 1 09.04.2012 18:28
В действительной матрице n*n поменять местами строку с MAX со строкой содержащей MIN элемент drnokaut Помощь студентам 1 06.06.2011 08:53
Как поменять местами в массиве max и min элемент. Stager Общие вопросы C/C++ 2 13.01.2009 02:03