Показать сообщение отдельно
  #2  
Старый 20.05.2014, 06:36
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ошибка тут:
Код:
procedure summa_maxim_elementov();
var max_el,summa, i, j : Integer;

begin
    max_el := 0;   // <-- Ошибка!!!
    summa := 0;
    for i := Low(B) to High(B)  do
    begin

      for j := Low(B) to i do
      begin

        if(B[i,j] > max_el)  then
        begin
        max_el := B[i,j];
        end;

      end;
      summa := (summa + max_el);
    end;

Ты очищаешь найденное макс. значение только раз, перед поиском и сумированием. Пусть в первой строке макс. значение 6, а во второй - 4. Но все значения второй строки у тебя меньше, чем уже найденный макс из первой строки. Соответсвенно, вместо макс. знаяения второй строки у тебя в переменной max_el будет 6, а не 4. Т.е. тебе надо очищать значение этой переменной на каждой итерайии внешнего цикла.

ЗЫ. Вообще, обычно при поиске макс/мин берут значение первого элемента массива, а сам цикл начинают со второго элемента. Особенно это полезно, когда ты заранее не знаешь диапазон значений.

ЗЗЫ. В архиве не обязательно было паковать экзешник, а код можно было выложить в тебе сообщения, он не такой большой.
Ответить с цитированием