15.01.2011, 15:23 | #11 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
15.01.2011, 15:23 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На форуме часто создаются аналогичные темы, вот аналоги вашей Матрицы и массивы в паскале Задача на массивы в Паскале Массивы на Паскале Массивы |
15.01.2011, 15:48 | #12 (permalink) |
Новичок
Регистрация: 14.01.2011
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
А что напортачено? хм, я вроде проверял, у меня все вроде норм, не важно ведь по условию как эту область(треугольник) поворачивать.
Вот только у меня почему-то выдает ошибку "26 Type mismatch" в процедуре traekt: Код:
procedure traekt; begin writeln('traektoriya:'); V:=A[n]; for j:=1 to n do Вот мой окончательный вариант: Код:
program kyrs; uses crt; type mas=array[1..15,1..15] of integer; vector=array[1..15] of integer; var i,j,n:integer; A,B:mas; V,V1,V2:vector; procedure vvod; begin repeat clrscr; write('vvedite razmernost massiva ot 5 do 15: '); readln(n); until (n>=5) and (n<=15); for i:=1 to n do for j:=1 to n do A[i,j]:=-100+random(201); end; procedure vivod(Av:mas); var i1,j1:integer; begin i1:=(n div 2)+1; if (n mod 2)=0 then j1:=(n div 2) else j1:=(n div 2)+1; for i:=1 to n do begin for j:=1 to n do begin if (i<i1) or ((i>i1) and (j<=i-i1)) or ((i>=i1) and (j>j1) and (j<n-(i-i1))) then textcolor(13) else textcolor(14); write(Av[i,j]:5); end; writeln; textcolor(13); end; Writeln('Press "Enter" to continue...'); ReadLn; end; procedure vivod_V(Vv:vector); begin for i:=1 to n do write(Vv[i]:5); writeln; end; procedure obmen(Ao:mas; var Bo:mas); var i1,j1:integer; begin Bo:=Ao; i1:=(n div 2)+1; if (n mod 2)=0 then begin j1:=(n div 2); for i:=i1 to n do for j:=i-i1+1 to j1 do begin Bo[j1+j,n-(i-i1)]:=Ao[i,j]; Bo[i,j]:=Ao[j1+j,n-(i-i1)]; end; end else begin j1:=(n div 2)+1; for i:=i1 to n do for j:=i-i1+1 to j1 do begin Bo[j1+j-1,n-(i-i1)]:=Ao[i,j]; Bo[i,j]:=Ao[j1+j-1,n-(i-i1)]; end; end; end; Procedure traekt; begin writeln('traektoriya:'); textcolor(4); for j:=1 to n do begin V[j]:=A[n,j]; write(V[j]:5); end; writeln; textcolor(13); Writeln('Press "Enter" to continue...'); end; procedure order(Vo:vector; var Vo1:vector; var Vo2:vector); var d:integer; begin Vo1:=V; for i:=1 to n do for j:=1 to n-i do if Vo1[j]>Vo1[j+1] then begin d:=Vo1[j+1]; Vo1[j+1]:=Vo1[j]; Vo1[j]:=d; end; Vo2:=V; for i:=1 to n do for j:=1 to n-i do if Vo2[j]<Vo2[j+1] then begin d:=Vo2[j+1]; Vo2[j+1]:=Vo2[j]; Vo2[j]:=d; end; end; procedure maxmin; var min,max,i1,j1:integer; begin i1:=(n div 2)+1; if (n mod 2)=0 then j1:=(n div 2) else j1:=(n div 2)+1; max:=A[1,1]; min:=A[1,1]; for i:=1 to i1-1 do for j:=1 to n do begin if A[i,j]>max then max:=A[i,j]; if A[i,j]<min then min:=A[i,j]; end; for i:=i1 to n-2 do for j:=j1+1 to n-(i-i1+1) do begin if A[i,j]>max then max:=A[i,j]; if A[i,j]<min then min:=A[i,j]; end; for i:=i1+1 to n do for j:=1 to i-i1 do begin if A[i,j]>max then max:=A[i,j]; if A[i,j]<min then min:=A[i,j]; end; writeln('max=',max); writeln('min=',min); end; BEGIN clrscr; randomize; textbackground(9); textcolor(13); vvod; clrscr; Writeln('Ishodnaya matritsa:'); vivod(A); obmen(A,B); Writeln('Preobrazovannaya matritsa:'); vivod(B); traekt; readln; order(V,V1,V2); Writeln; writeln('sortirovka po vozrastaniu:'); vivod_v(V1); Writeln; writeln('sortirovka po ubivaniu:'); vivod_v(V2); Writeln('Press "Enter" to continue...'); Readln; Writeln; Maxmin; ReadLn; END. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|