|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Cумма максимальных элементов всех строк треугольной матрицы!
Здравствуйте! Помогите найти ошибку в моем коде: программа создает треугольную матрицу из числа строк,которое вводим с клавиатуры. Затем нужно найти сумму максимальных элементов с каждой строки,и вывести это число. Программа работает,но неверно вычисляет сумму.. Не могу разобраться почему.. Помогите исправить ошибку..
|
#2
|
|||
|
|||
Ошибка тут:
Код:
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. Т.е. тебе надо очищать значение этой переменной на каждой итерайии внешнего цикла. ЗЫ. Вообще, обычно при поиске макс/мин берут значение первого элемента массива, а сам цикл начинают со второго элемента. Особенно это полезно, когда ты заранее не знаешь диапазон значений. ЗЗЫ. В архиве не обязательно было паковать экзешник, а код можно было выложить в тебе сообщения, он не такой большой. |