Вставить первую строку после строки, в которой находится первый встреченный максимальный элемент.
-Иван-
12.04.2007 1:14
Помогите, пожалуйста!!
Tan
12.04.2007 1:34
Ну можно было бы проще, посмотри что у меня вышло, то ли, что тебе надо :
uses crt; Const M = 5; N = 5; var ms : array [1..N,1..M] of integer; max,i,j,k : integer; begin Clrscr; randomize; for i:=1 to N do begin writeln; for j:=1 to M do begin ms[i,j]:=random(10); write (ms[i,j]:2); end; end; max:=ms[1,1]; for i:=1 to N do for j:=1 to M do if ms[i,j] >= max then max:=ms[i,j]; writeln; writeln ('MAX ',max); for i:=1 to N do for j:=1 to M do if ms[i,j] = max then begin for k:=1 to M do ms[i + 1,k]:=ms[1,k]; break; end; for i:=1 to N do begin writeln; for j:=1 to M do write (ms[i,j]:2); end;
klem4
12.04.2007 11:30
Tan, ты хотябы программу свою запускал ? Если да, она хотя бы раз отработала без ошибки ? Выход за границы массива при любом раскладе ...
я тебя предупреждал ? предупреждал. Вот теперь не обижайся, предупреждение + 1, в следующий раз понижу рейтинг.
Я догадываюсь в чем проблема. Поставь первой строчкой программы {$R+}. Видимо в опциях комипялатора отключено у тебя, в связи с этим амнистия, снимаю предупреждение.
Но программа всеравно делает не то что нужно в задании.
volvo
12.04.2007 12:52
Цитата
Видимо в опциях комипялатора отключено у тебя, в связи с этим амнистия
Логику амнистии можно объяснить? То, что программа вылетает за пределы массива, означает только одно - программа неверна. Соответственно, результаты ее работы непредсказуемы. А уж то, что у предлагающего решение отключен {$R}, при тестировании (если тесстирование вообще производилось) - это вообще верх неприличия, и поводом для амнистии служить никак не может...
Tan
13.04.2007 0:30
Полностью согласен с volvo, но я тестил, наверно недовыделил, но это не суть, сам виноват что не так прочитал задание и не поставил ограничение в массиве.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.