Лабораторная работа №7
|
|
11. Дана квадратная матрица порядка M. Найти сумму элементов ее главной и |побочной диагонали. А также суммы элементов дополнительных диагоналей к главной и побочной.
Код const nmax=100; var a: array[1..nmax,1..nmax] of integer; n,i,j,suma,suma1,sum1,sum2,sum3,sum4,sum5,sum6: integer; begin randomize; write('размер матрицы n: '); readln(n); writeln('матрица:'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(150)-50; write(a[i,j]:5); end; writeln; end; suma:=0; suma1:=0; j:=1; for i:=1 to n do suma:=suma+a[i,i]; for i:=n downto 1 do begin suma1:=suma1+a[i,j]; j:=j+1; end; writeln('главная диагональ: ',suma); writeln('побочная: ',suma1); writeln; for i:=1 to n do sum1:=sum1+a[i+1,i]; for i:=1 to n do sum2:=sum2+a[i,i+1]; sum3:=sum2+sum1; writeln('Дополнительные к главной: ',sum3); j:=1; for i:=n downto 2 do begin sum4:=sum4+a[i,j+1]; j:=j+1; end; j:=1; for i:=(n-1) downto 1 do begin sum5:=sum5+a[i,j]; j:=j+1; end; sum6:=sum4+sum5; writeln('Дополнительные к побочной: ',sum6); end.
№ 21 | Автор: Forzorezor |
2014-11-26, 18:51 | Изменено: Forzorezor - Пт, 2014-11-28, 17:11
|
Репутация: [ + 4 ]
|
|
|
Код program torres; var X: array [1..10] of real; Y: array [1..10] of real; n,T1,T2,i,j, generation:integer; R,R1, S:real; Label 1; begin writeln ('1 - автоматический ввод случайных чисел'); writeln ('2 - ввод чисел вручную'); readln(generation); if (generation=1) then begin writeln('Введите N (N<=10)'); readln(N); randomize;
writeln('Значения множества точек А (X Y)'); for i:=1 to n do begin X[i]:=random(10); Y[i]:=random(10); writeln(X[i],' ',Y[i],' '); end; goto 1; end else writeln('Введите N (N<=10)'); readln(N); writeln('Значения множества точек А (X Y)'); for i:=1 to n do begin write(i,' )точка '); read(X[i]); read(Y[i]); end; 1: begin R:=0; R1:=9999; for i:=1 to N do begin S:=0; for j:=1 to N do S:=S+sqrt(sqr(X[i]-X[j])+sqr(Y[i]-Y[j])); if S>R then begin R:=S; T1:=i; T2:=j; end; if S<R1 then begin R1:=S; T1:=i; T2:=j; end; end; end;
Writeln; Writeln('Ответ'); Writeln('Пара точек',t1,' ',t2); Writeln('Максимальная сума ',R); Writeln; Writeln('Ответ'); Writeln('Пара точек',t1,' ',t2); Writeln('Минимальная сума ',R1); end.
16. Дано множество A из N точек. Найти такую точку из данного множества, сумма расстояний от которой до остальных его точек минимальна и максимальна, и сами эти суммы.
№ 22 | Автор: torres |
2014-11-26, 18:56 | Изменено: torres - Ср, 2014-11-26, 19:06
|
Репутация: [ + 0 ]
|
|
|
10. Дана целочисленная матрица размера M x N. Вывести номер ее первой строки, содержащей максимальное количество одинаковых элементов.
Код uses crt; const nmax=10; type mas=array[1..nmax] of іnteger; matr=array[1..nmax] of mas; function Odsn(v:mas;n:byte):byte; var e,t,r,mx:byte; begin mx:=0; for e:=1 to n do begin r:=0; for t:=1 to n do if v[e]=v [t]then r:=r+1; if r>mx then mx:=r; end; Odin:=mx; end; var a:matr; q,w,е,t,imx,mx:byte; begin clrscr; randomize; repeat write('Количество строк до ',nmax,' q='); readln(q); until q in [1..nmax]; repeat write('Количество столбцов до ',nmax,' w='); readln(w); until w in [1..nmax]; writeln('Исходная матрица:'); for e:=1 to q do begin for t:=1 to w do begin a[e,t]:=random(8); write(a[e,t]:3); end; writeln; end; writeln; mx:=1; imx:=1; for e:=1 to q do if Odin(a[e],w)>mx then begin mx:=Odin(a[e],w); imx:=e; end; if mx=1 then write('Одинаковых элементов нет') else begin writeln('Номер первой строки=',imx); end; readln end.
№ 23 | Автор: Awesome |
2014-11-26, 22:44 | Изменено: Awesome - Ср, 2014-11-26, 22:53
|
Репутация: [ + 2 ]
|
|
|