![]() |
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;-) Эскизы прикрепленных изображений ![]() |
![]() ![]() |
Legolas |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот решенная задача, может что-нибудь не верно, или всё o'key?
![]() Код program z19; uses crt; var n,i,j,max:integer; a:array [1..7,1..7] of integer; z:byte; begin clrscr; textcolor(lightgreen); randomize; repeat write(' Vvedite razmernost(nechetnoe chislo)> '); readln(n) until odd(n)=true; {writeln('vvedite elementi');} for i:=1 to n do begin for j:=1 to n do begin{read(a[i,j]);} a[i,j]:=random(9); write(a[i,j]:3,' '); end; writeln; end; writeln(' Menu (vibor cifry):'); repeat writeln('1-a, 2-b, 3-c, 4-d, 5-e, 6-f, 7-g, 8-h, 9-i, 10-j'); readln(z); case z of 1:begin for i:=1 to n do for j:=i to n do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; 2:begin for i:=1 to n do for j:=1 to i do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; 3:begin for i:=1 to ((n div 2)+1) do for j:=i to (n-i+1) do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; 4:begin for i:=n downto ((n div 2)+1) do for j:=(n-i+1) to i do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; 5:begin for i:=1 to ((n div 2)+1) do for j:=i to (n-i+1) do if a[i,j]>max then max:=a[i,j]; for i:=n downto ((n div 2)+1) do for j:=(n-i+1) to i do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; 6:begin for j:=1 to ((n div 2)+1) do for i:=j to (n-j+1) do if a[i,j]>max then max:=a[i,j]; for j:=n downto ((n div 2)+1) do for i:=(n-j+1) to j do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; 7:begin for j:=1 to ((n div 2)+1) do for i:=j to (n-j+1) do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; 8:begin for j:=n downto ((n div 2)+1) do for i:=(n-j+1) to j do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; 9:begin for j:=1 to n do for i:=1 to (n-j+1) do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; 10:begin for j:=1 to n do for i:=n downto (n-j+1) do if a[i,j]>max then max:=a[i,j]; writeln('max=',max);max:=0; end; end; until readkey=#13; readkey end. |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Ну, это может и не ошибка, но недочет по крайней мере:
a:array [1..7,1..7] of integer; Смотри, что ты делаешь: на нечетность ты проверяешь (хотя зачем = True добавлено, я так и не пойму, вполне можно обойтись и без него), а вот если я введу n = 9? Число нечетное, все по условию, но вот тут: a[i,j]:=random(9);могут быть проблемы... |
Legolas |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(volvo @ 19.05.05 18:02) а вот если я введу n = 9? Число нечетное, все по условию, но вот тут: a[i,j]:=random(9);могут быть проблемы... Это генерация случайных чисел от 0 до 9. Не буду же я вместо 9 вводить 100, на бумажке считать долго... |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 20:36 |