![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Legolas |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем привет!
Вот решаю такую задачу: Дана действительная квадратная матрица порядка п. найти наибольшее из значений элементов, расположенных в заштрихованной области матрицы. (см. присоединенное изображение) Вот что я сделал: Код program matrix; uses crt; var a: array[1..10,1..10] of integer; s,r: integer; i,j,n: integer; begin clrscr; textcolor(lightgreen); randomize; write(' Input razmer matrix> '); readln(n); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(10); write(a[i,j]:5,' '); end; writeln; end; write(' A: '); s:=0; for i:=1 to n do for j:=1 to n do s:=s+a[i,j]; writeln(s); write(' B: '); s:=0; for i:=1 to n do for j:=1 to i do s:=s+a[i,j]; writeln(s); write(' V: '); s:=0; for i:=1 to n div 2 + n mod 2 do for j:=1 to n-i+1 do s:=s+a[i,j]; writeln(s); write(' G: '); s:=0; for i:=n mod 2 + n div 2 to n do for j:=n-i+1 to i do s:=s+a[i,j]; writeln(s); write(' D: '); write(' E:'); write(' J:'); s:=0; for i:=1 to n div 2 + n mod 2 do for j:=i to n-j+1 do s:=s+a[i,j]; writeln(s); write(' Z: '); s:=0; for i:=1 to n div 2 + n mod 2 do for j:=1 to n-j+1 do s:=s+a[i,j]; writeln(s); write(' I: '); s:=0; for i:=1 to n do for j:=1 to n-i+1 do s:=s+a[i,j]; writeln(s); write(' K: '); s:=0; for i:=1 to n do for i:=n-i+1 to n do s:=s+a[i,j]; writeln(s); readln; end. У меня тут работает только B, G и I, в остальном баги….Помогите пожалуйста их исправить, а также дописать D и E. Всем заранее благодарен. Goodbye;-) Эскизы прикрепленных изображений ![]() |
![]() ![]() |
hiv |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Если программа работает - это не значит что у тебя нет ошибок!
У тебя не проинициализировано значение переменной max! Что это значит? - это значит, что в первой же строке for j:=i to n do if a[i,j]>max then max:=a[i,j];у тебя значение переменной max может быть какое угодно! Это не БЕЙСИК. В Паскале переменные не инициализируются нулями по умолчанию. Это РАЗ. ДВА: После нахождения максимального значения и его распечатки ты обнуляешь переменную max. Если в будущем элементы твоей матрицы будут ВСЕ отрицательными, то твоя программа по всем пунктам выдаст, что максимальный элемент равен нулую, а его в твоей матрице просто нет!!! Надо инициализировать переменную max только значением какого-либо элемента матрицы. Я уже показывал в своем 3 посте как. max:=a[1,1]; -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 20:41 |