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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2008, 09:02   #1
JiLiYa
Пользователь
 
Регистрация: 23.09.2008
Сообщений: 16
Восклицание Вставить первую строку после строки, в которой находится первый встреченный максимальный элемент.

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

Program Task5_04;
const
M=4;
N=4;
var
X:Array[1..M,1..N] of Real;
i,j,k:Word;
buf,max:Real;
begin
Randomize;
WriteLn('sozdanie elementov massiva:');
for i:=1 to M do
for j:=1 to N do
X[i,j]:=Random(10000)/100;
WriteLn('Nachalniy massiv:');
for i:=1 to M do
begin
for j:=1 to N do
Write(X[i,j]:8:2);
WriteLn;
end;
WriteLn;
max:=x[1,1];
for j:=1 to N do
for i:=1 to M do
if X[i,j]>max then
begin
buf:=X[i,j];
X[i,j]:=X[1,j];
X[1,j]:=buf;
end;
WriteLn('Itogoviy massiv:');
for i:=1 to M do
begin
for j:=1 to N do
Write(X[i,j]:8:2);
WriteLn;
end;
Readln;
end.

В чем тут ошибка? Он что-то ищет, перемещает,но не могу понять, что тут надо доделать чтоб было так как надо(((
Заранее спасибо за помощь))
JiLiYa вне форума Ответить с цитированием
Старый 03.12.2008, 09:30   #2
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

А разьве не правильней будет вести поиск построчно а не по столбцам?
Сначала находим максимальный элемент в нашей первой строчке
Код:
for j := 2 to N do
begin
  max := x[1,1];
  if x[1,j] > max then max := x[1;j];
end;
Дальше ищем в оставшемся массиве, построчно, 1ый элемент больше нашего.
Код:
p := 0;
for i := 2 to M do
begin
  for j := 1 to N do
  begin
    if (x[i,j] > max)and(p = 0) then
    begin
      p := 1;
      nmrStroki := i;
    end;
  end;
end;
Дальше ставим строчку после той которую пометили в nmrStroki, обрати внимание что нам прейдется сдвинуть массив, иначе мы просто потеряем строчку если nmrStroki < M и получим ругательство от паски если nmrStroki = M.
Код:
for i := 1 to N do rplsArray[i] := x[1,i];
for i := 1 to nmrStroki do
begin
  for j := 1 to N do x[i,j] := x[i+1,j];
end;
for i := 1 to N do x[nmrStroki,i] := rplsArray[i];
В итоге всех этих махинаций, 1ая строчка переместится на место той где мы нашли максимальный элемент, а все строчки включая ту(в которой максимальный элемент) перместятся на 1 строчку вверх.
Zeraim вне форума Ответить с цитированием
Старый 03.12.2008, 11:37   #3
JiLiYa
Пользователь
 
Регистрация: 23.09.2008
Сообщений: 16
По умолчанию

Спасибо) Да,так гораздо лучше,прозрачнее)))Вроде бы нормально...только вот часто что-то меняются первая и вторая строка?Это нормально или я что-то недопонимаю просто?
JiLiYa вне форума Ответить с цитированием
Старый 03.12.2008, 11:39   #4
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Смотрите где максимальный элемент и думайте нормально это или нет
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 03.12.2008, 12:13   #5
JiLiYa
Пользователь
 
Регистрация: 23.09.2008
Сообщений: 16
По умолчанию

Да, все правильно..))Спасибо))
JiLiYa вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить максимальный по модулю элемент каждой строки. (Kate) Помощь студентам 2 29.11.2008 21:05
Найти максимальный элемент матрицы и вставить правее него столбец из нулей и ниже него строку из нулей. Romer9999 Паскаль, Turbo Pascal, PascalABC.NET 3 28.11.2008 11:28
Максимальный элемент массива j_Q Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 04.11.2008 22:48
В каждой строке массива выбирается максимальный элемент sergeyfsd Общие вопросы Delphi 2 13.05.2008 00:10
Функция которая в массиве ищет максимальный по модулю элемент Absent Помощь студентам 5 19.11.2007 21:23