Новые сообщения · Правила  
  • Страница 2 из 2
  • «
  • 1
  • 2
Лабораторная работа №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 ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: