Помощь - Поиск - Пользователи - Календарь
Полная версия: работа с массивами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
mithquessir
Помогите, пожалуйста, решить задачу:

Цитата
В массиве X(N,M) все числа различны, в каждой строке выбирается минимальный элемент,

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


Бьюсь уже несколько дней, но ничего не получается.
Идея такова: сканируется первая и находится минимальный элемент. Когда начинает сканироваться новая строка, проверяется max < min и в t заносится номер строки. А почему же не работает?

Код
var
 x: array[1..3,1..3] of integer;
 i,j,k,n,t,max,min:integer;
begin
 k := 1;
 t := 0;
 n := 1;
 x[1,1] := 1;
 x[1,2] := 2;
 x[1,3] := 3;
 x[2,1] := 4;
 x[2,2] := 5;
 x[2,3] := 6;
 x[3,1] := 7;
 x[3,2] := 8;
 x[3,3] := 9;
 min := x[1,1];

 for i := 1 to 3 do
 for j := 1 to 3 do
 begin
   if k < i then
   begin
     if x[i,j] < min
     then min := x[i,j];
     if n = 1 then
     begin
       max := min;
       n := 0;
     end;
     if max < min then
     begin
       max := min;
       t := i;
     end;
     inc(k);
     min := x[i,j];
   end
   else
   begin
     if x[i,j] < min
     then min := x[i,j];
   end;
 end;
 WriteLn(t);
end.
volvo
Вообще-то эта задача решается так:

const
 nRow = 3; nCol = 3;
 x: array[1 .. nRow, 1 .. nCol] of integer =
   ((7, 8, 9), (4, 5, 6), (1, 2, 3));

var i, j: integer;
 max_ix, max, min: integer;
begin
 max_ix := 1; max := -maxInt;

 for i := 1 to nRow do
   begin
     min := x[i, 1];
     for j := 1 to nCol do
       if x[i, j] > min then min := x[i, j];

     if max < min then
       begin
         max := min; max_ix := i;
       end;
   end;
 writeln(max_ix);
end.


Цитата
Когда начинает сканироваться новая строка, проверяется max < min и в t заносится номер строки.
Нет, не когда начинает сканировалься, а после нахождения в ней MIN... И кроме этого, сам MAX тоже нужно запоминать для последующих сравнений ;)
mithquessir
Спасибо большое, а как решается такая задача:

Цитата
Ввести число "n" и заполнить двухмерныый массив размером n * n натуральными числами до n * n  до по спирали
?
Altair
Такое есть в FAQ'e, а я сейчас СУПЕР ЗОЛ (и прежде всего на себя) поэтому если тема не будет в течении 5 минут переименованна, то она будет закрыта!!! angry.gif angry.gif angry.gif
(это называется попасть под горячую руку админа)
Altair
ЗЫ:! angry.gif
А поскольку она не может быть редактированна в виду того, что созданна гостем, то она закрыта!
Извините и читайте правила! rolleyes.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.