| Лабораторная работа №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 ] |  
|  |  |