Новые сообщения · Правила  
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум ПРОГРАММИСТОВ » КУРС ОПР - ПАСКАЛЬ » Лабораторные работы » Лабораторная работа №7 (Одно и двумерные массивы)
Лабораторная работа №7
Цель работы - изучение одномерных и двумерных массивов.

Результатом выполнения лабораторной работы должна быть программа, решающая задачу вашего варианта и скрины примеров выполнения программы, а также ссылка на код программы для онлайн-паскаля. В программе предусмотреть два варианта ввода матриц - вручную и автоматически, используя генератор случайных чисел.

Варианты заданий.

1. Дана матрица размера 5 x 10. В каждой строке найти количество элементов, больших среднего арифметического всех элементов этой строки.

2. Написать программу, которая выполняет умножение двух матриц.

3. Дана квадратная матрица. Напишите программу, которая выводит значения всех миноров.

4. Дано множество A из N точек. Найти наименьший периметр треугольника, вершины которого принадлежат различным точкам множества A, и сами эти точки (точки выводятся в том же порядке, в котором они перечислены при задании множества A).

5. Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке и в каждом столбце.

6. Дана матрица размера 5 x 10. Найти минимальный среди максимальных элементов каждой строки и максимальный среди минимальных каждого столбца.

7. Дана целочисленная матрица размера 5 x 10. Вывести номер ее первой строки и последнего столбца, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк или столбцов нет, то вывести 0.

8. Дана целочисленная матрица размера M x N. Различные строки (столбцы) матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках (столбцах). Найти количество строк и столбцов, похожих на первую и последнюю строку.

9. Дана целочисленная матрица размера M x N. Найти количество ее строк и столбцов, все элементы которых различны.

10. Дана целочисленная матрица размера M x N. Вывести номер ее первой строки, содержащей максимальное количество одинаковых элементов.

11. Дана квадратная матрица порядка M. Найти сумму элементов ее главной и |побочной диагонали. А также суммы элементов дополнительных диагоналей к главной и побочной.

12. Дана целочисленная матрица размера M x N. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0.

13. Дана матрица размера M x N. Элемент называется локальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на 0.

14. Дана матрица размера M x N. Поменять местами ее строки так, чтобы их минимальные элементы образовывали возрастающую последовательность.

15. Даны множества A и B, состоящие соответственно из N1 и N2 точек. Найти минимальное и максимальное расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии.

16. Дано множество A из N точек. Найти такую точку из данного множества, сумма расстояний от которой до остальных его точек минимальна и максимальна, и сами эти суммы.

17. Дана матрица 4х4. Посчитать ее определитель.
1 | Автор: admin | 2014-10-05, 20:29   |  Репутация: [ + 22 ]
1 | Автор: admin | 2014-10-05, 20:29   |  Репутация: [ + 22 ]
Задание №2. Написать программу, которая выполняет умножение двух матриц. 

Код
Const   
N=50;
var
G:Array[1..N,1..N] of real;
L:Array[1..N,1..N] of real;
C:Array[1..N,1..N] of real;
i,j,x,y,o,k,z,s,v,f:integer;
H:real;
Label M1, M2, M3, M4, M5;
Begin
   M1: Writeln('Введите размер матрицы G');
   Read(x,y);
   Writeln('Введите размер матрицы L');
   Read(z,k);
     If  y=z then  goto M3
     Else   
      Begin
     Writeln('Несоответсвие размеров матриц. Хотите ввести даные еще раз? Да-1, нет - 2');          
      Read(f);
      If (f=1) then goto M1
      else goto M2;
        End;         
M3:  Writeln('Хотите самостоятельно ввести даные? Да-1, нет-2');
       read(v);
        If (v=1) then goto M4
       else
         Begin   
        randomize;
        for i:=1 to x do begin
        for j:=1 to y do begin
        G [i][j]:= random(50);
         end;
        end;
         randomize;
        for i:=1 to z do begin
        for j:=1 to k do begin
        L[i][j]:= random(50);
         end;
       end;
        Goto M5;
         End;         
   M4: Writeln('Введите матрицу G');
   for i:=1 to x do
   for j:=1 to y do read(g[i,j]);
   Writeln('Введите матрицу l');
   for i:=1 to z do   
   for j:=1 to k do read(l[i,j]);
   Writeln('G*L=');
   M5: Begin
     For x:=1 to x do   
     For k:=1 to k do   
      Begin
       H:=0;
       for o:=1 to z do   
       for s:=1 to y do
       H:=G[x,y]*L[z,k];
       c[x,k]:=H;
       End;
      End;
      For i:=1 to x do
       Begin
      for j:=1 to k do   
      Write(C[i,j]:5);
      writeln;
       End;
M2: Writeln('End!')     
   end.

http://195.208.237.170/WDE/?shared=beznoschenko/Program1.pas



2 | Автор: beznoschenko | 2014-10-12, 11:01 | Изменено: beznoschenko - Вс, 2014-10-12, 11:02   |  Репутация: [ + 2 ]
5. Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке и в каждом столбце.
Код
program matr;
const n=10; m=5;
var i,j:integer;
      a:array[1..100,1..100] of integer;
      max,min,p,maxi,maxj,mini,minj:integer;
begin
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
writeln('Вывод:');

max:=-32768;
min:=32767;

for i:=1 to n do
begin
   for j:=1 to m do
   begin
    if a[i,j]>max then
     begin
      max:=a[i,j];
      maxi:=i;
      maxj:=j;
     end;
    if a[i,j]<min then
     begin
      min:=a[i,j];
      mini:=i;
      minj:=j;
     end;
   end;
p:=a[maxi,maxj];
a[maxi,maxj]:=a[mini,minj];
a[mini,minj]:=p;
max:=-32768;
min:=32767;
end;
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
end.




Selena
3 | Автор: Selena | 2014-10-19, 20:31 | Изменено: Selena - Вс, 2014-10-19, 20:33   |  Репутация: [ + 2 ]
14. Дана матрица размера M x N. Поменять местами ее строки так, чтобы их минимальные элементы образовывали возрастающую последовательность. 


Код
uses crt;
const nmax=20;
var a:array[1..nmax,1..nmax] of real;
     n,m,i,j,l:byte;
     mn,b:real;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('Количество столбцов до ',nmax-1,' m=');
readln(m);
until m in [1..nmax-1];
for i:=1 to n do
for j:=1 to m do
a[i,j]:=10*random;
for i:=1 to n do
  begin
   mn:=a[i,1];
   for j:=1 to m do
   if a[i,j]<mn then mn:=a[i,j];
   a[i,m+1]:=mn;
  end;
writeln('Исходный массив:');
writeln('Миним.':(m*5+10));
for i:=1 to n do
  begin
   for j:=1 to m+1 do
   if j=m+1 then write(a[i,j]:8:1)
   else write(a[i,j]:5:1);
   writeln;
  end;
for i:=1 to n-1 do
for l:=i+1 to n do
if a[i,m+1]>a[l,m+1] then
for j:=1 to m+1 do
  begin
   b:=a[i,j];
   a[i,j]:=a[l,j];
   a[l,j]:=b;
  end;
writeln('Строки по неубыванию минимальных:');
writeln('Миним.':(m*5+10));
for i:=1 to n do
  begin
   for j:=1 to m+1 do
   if j=m+1 then write(a[i,j]:8:1)
   else write(a[i,j]:5:1);
   writeln;
  end;
readln
end.


4 | Автор: Bun_Frith | 2014-10-19, 22:14   |  Репутация: [ + 4 ]
6. Дана матрица размера 5 x 10. Найти минимальный среди максимальных элементов каждой строки и максимальный среди минимальных каждого столбца. 
Код
program ELMpr_La7;
{
OoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOo
o░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░o
O░░Lab░work░#7░░file:ELMpr_La7.pas░==░ver.1.0░░O
o░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░o
O░░░░░░░░░░░░░░Laboratory work #7░░░░░░░░░░░░░░O
o░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░o
O░░©░Grankin░V.I.░Group░І-14-1░Date:░21/10/14░░O
o░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░o
OoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOo
}
const
    Max_M =  5;
    Max_N = 10;
var
    A : array [1..Max_M, 1..Max_N] of integer;
    Max_i : array [1..Max_M] of integer;
    Min_j : array [1..Max_N] of integer;
    Min_Max_i,Max_Min_j : integer;

procedure Random;
var
    i, j : byte;
begin
    randomize;
    for i := 1 to Max_M do
      for j := 1 to Max_N do A[i,j] := random(100);
end;

procedure Sorting;
var
    i, j : byte;
begin

    for i := 1 to Max_M do
    begin
      Max_i [i]:= A[i,1];
      for j := 2 to Max_N do
        if Max_i [i]< A[i,j] then Max_i [i]:= A[i,j];
    end;

    Min_Max_i := Max_i[1];
    for i := 2 to Max_M do
      if Min_Max_i > Max_i [i]then Min_Max_i := Max_i[i];

    for j := 1 to Max_N do
    begin
      Min_j [j]:= A[1,j];
      for i := 2 to Max_M do
        if Min_j [j]> A[i,j] then Min_j [j]:= A[i,j];
    end;

    Max_Min_j := Min_j[1];
    for j := 2 to Max_N do
      if Max_Min_j < Min_j [j]then Max_Min_j := Min_j[j];

end;

procedure WriteS;
var
    i, j : byte;
begin
    WriteLn('Исходная таблица');
    for i := 1 to Max_M do
    begin
      for j := 1 to Max_N do Write(A[i,j]:4);
      WriteLn;
    end;
    WriteLn;
    WriteLn('минимальный среди максимальных элементов каждой строки: ', Min_Max_i:4);
    WriteLn;
    WriteLn('максимальный среди минимальных элементов каждого столбца: ', Max_Min_j:4);
    WriteLn;
end;

begin
    Random;
    Sorting;
    WriteS;
end.



El_Magnifico with <3
5 | Автор: El_MAgnifico | 2014-10-21, 18:46 | Изменено: El_MAgnifico - Вт, 2014-10-21, 19:34   |  Репутация: [ + 8 ]
9. Дана целочисленная матрица размера M x N. Найти количество ее строк и столбцов, все элементы которых различны.

Код
Program qwerty159;
uses crt;
const nmax=15;
Var a:array[1..nmax,1..nmax] of integer;
     m,n,i,j,p,k:byte;
     f:boolean;
Begin
clrscr;
randomize;
Repeat
Write('Количество строк до ',nmax,' m=');
Readln(m);
until m in [1..nmax];
Repeat
Write('Количество столбцов до ',nmax,' n=');
Readln(n);
until n in [1..nmax];
Writeln('Исходная матрица:');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(50);
Write(a[i,j]:4);
end;
Writeln;
end;
k:=0;
for j:=1 to n do
begin
i:=1;
f:=true;
While(i<=m)and f do
begin
for p:=1 to m do
if (p<>i)and(a[p,j]=a[i,j]) then f:=false;
if f then inc(i);
end;
if f then k:=k+1;
end;
Write('Количество столбцов, где все элементы различны=',k);
Readln;
end.

 
6 | Автор: @qwerty159 | 2014-10-21, 21:45   |  Репутация: [ + 0 ]
Код
program ira_butenko97;
var
x,y: array [1..100] of integer;
a,b,c,P,Pmin: double;
i,j,k,n,xa,xb,xc,ya,yb,yc, flag: integer;

begin

writeln('0 - автоматический ввод точек');
writeln('1 - ввод точек вручную');
readln(flag);

if (flag=0) then begin
  writeln('введите количество точек>=3');
readln(n);
randomize;
writeln('точки:');
for i:=1 to n do
begin
                 x[i]:=random(20);
                 y[i]:=random(20);
                 writeln (x[i],' ',y[i]);
end;
end;

if (flag=1) then begin
writeln('введите количество точек>=3');
read(n);
for i:=1 to n do
begin
                 write('x',i,' ');
                 readln(x[i]);
                 write('y',i,' ');
                 readln(y[i]);
  end;
end;

Pmin:=100000;

for i:=1 to n do
for j:=i+1 to n do
for k:=j+1 to n do begin
  a:= sqrt(sqr(x[j]-x[i])+sqr(y[j]-y[i]));
  b:=sqrt(sqr(x[k]-x[i])+sqr(y[k]-y[i]));
  c:=sqrt(sqr(x[k]-x[j])+sqr(y[k]-y[j]));
  writeln(a:6:3,' ', b:6:3,' ',c:6:3);
   if(a+b>c)and (a+c>b) and(b+c>a) then
  if a+b+c<Pmin then begin
                 Pmin:= a+b+c;
                 xa:=x[i];
                 ya:=y[i];
                 xb:=x[j];
                 yb:=y[j];
                 xc:=x[k];
                 yc:=y[k];
                 end;
end;

if (Pmin=100000) then writeln('такой треугольник не найден')
else begin
   writeln ('min perimeter=',Pmin:8:3);
   writeln ('точки');
   writeln ('A: ',xa, ' ', ya);
   writeln ('B: ',xb,' ', yb);
    writeln ('C: ',xc,' ',yc);
end;
readln;
end.

4. Дано множество A из N точек. Найти наименьший периметр треугольника, вершины которого принадлежат различным точкам множества A, и сами эти точки (точки выводятся в том же порядке, в котором они перечислены при задании множества A). 
7 | Автор: ira_butenko97 | 2014-10-25, 22:43   |  Репутация: [ + 4 ]
Задание 2: Написать программу, которая выполняет умножение двух матриц. 


Код
Program beznoschenko;
(************************************************
      *       laba #5 file:beznoschenko.pas==ver.7.0  *                       
      *                    laba#7                     *
      *Beznoschenko Valentina I-14-1 22/09/2014       *
      *************************************************)
Const  
N=50;
var
G:Array[1..N,1..N] of real;
L:Array[1..N,1..N] of real;
C:Array[1..N,1..N] of real;
i,j,x,y,k,z,v,f,m:integer;
Label M1, M2, M3, M4, M5;
Begin
  M1: Writeln('Введите размер матрицы G');
  Read(x,y);
  Writeln('Введите размер матрицы L');
  Read(z,k);
    If  y=z then  goto M3
    Else  
     Begin
    Writeln('Несоответсвие размеров матриц. Хотите ввести даные еще раз? Да-1, нет - 2');         
     Read(f);
     If (f=1) then goto M1
     else goto M2;
       End;        
M3:  Writeln('Хотите самостоятельно ввести даные? Да-1, нет-2');
      read(v);
       If (v=1) then goto M4
      else
        Begin  
       randomize;
       for i:=1 to x do begin
       for j:=1 to y do begin
       G[i] [j]:= random(50);
        end;
       end;
        randomize;
       for i:=1 to z do begin
       for j:=1 to k do begin
       L[i][j]:= random(50);
        end;
      end;
       Goto M5;
        End;        
  M4: Writeln('Введите матрицу G');
  for i:=1 to x do
  for j:=1 to y do read(g[i,j]);
  Writeln('Введите матрицу l');
  for i:=1 to z do  
  for j:=1 to k do read(l[i,j]);
  Writeln('G*L=');
  M5: Begin
      c[i,j]:=0;
      for i:=1 to x do
      for j:=1 to k do
      for m:=1 to y do  
      c[i,j]:=c[i,j]+G[i,m]*L[m,j];
      End;
     For i:=1 to x do
      Begin
     for j:=1 to k do  
     Write(c[i,j]:5);
     writeln;
      End;
M2: Writeln('End!')    
  end.


http://195.208.237.170/WDE....nko.pas

     
8 | Автор: beznoschenko | 2014-10-29, 23:59   |  Репутация: [ + 2 ]
15. Даны множества A и B, состоящие соответственно из N1 и N2 точек. Найти минимальное и максимальное расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии.
Код
program Olgafrolova;
          (****************************************************
     **   Laba #7 File Olga Frolova.pas == ver.1.0. **
     ***  Frolova O.R. Group I-14-1 Date 02.11.2014 ***
     ****************************************************)
var
AX: array [1..100] of real;
AY: array [1..100] of real;
BX: array [1..100] of real;
BY: array [1..100] of real;
n1,n2,tochkaA,tochkaB,i,j,k,m,generation:integer;
R:real;
Label M1,M2,M3;
    begin
     writeln ('1 - автоматический ввод случайных чисел');
  writeln ('2 - ввод чисел вручную');
readln(generation);
if (generation=1) then begin
  writeln ('Введите количество точек для множества A>=2');
  readln(k);
  randomize;
  writeln ('Точки:');
  for i:=1 to k do
  begin
  AX[i]:=random(10);
  AY[i]:=random(10);
   writeln(AX[i],' ',AY[i],' ');
   end;
  writeln ('Введите количество точек для множества B>=2');
  readln(m);
  randomize;
  writeln ('Точки:');
  for i:=1 to m do
  begin
  BX[i]:=random(10);
  BY[i]:=random(10);
  writeln(BX[i],' ',BY[i],' ');
   end;
   tochkaB:=1;
tochkaA:=1;
R:=sqrt(sqr(AX[tochkaA]-BX[tochkaB])+sqr(AY[tochkaA]-BY[tochkaB]));
  for i:=1 to k do
   begin
for j:=1 to m do
    begin
if R>(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
    begin
R:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
tochkaA:=i;
tochkaB:=j;
end; end; end;
Writeln('Точка из множества A ',tochkaA);
Writeln('Точка из множества B ',tochkaB);
writeln('Минимальное расстояние между ними ', R);
for i:=1 to k do
   begin
for j:=1 to m do
    begin
if R<(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
    begin
R:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
tochkaA:=i;
tochkaB:=j;
end; end; end;
Writeln('Точка из множества A ',tochkaA);
Writeln('Точка из множества B ',tochkaB);
writeln ('Максимальное расстояние между ними ', R);
end;

if (generation=2) then begin
             writeln('Введите n1 (n1<=100)');
             readln(n1);
              writeln('Значения множества точек А (X Y)');
for i:=1 to n1 do begin write(i,' )точка '); read(AX[i]); read(AY[i]); end;
             writeln('Введите n2 (n2<=100)');
             readln(n2);
writeln('Значения множества точек B (X Y)');
for i:=1 to n2 do begin write(i,' )точка '); read(BX[i]); read(BY[i]); end;

{Решение задания}
  tochkaB:=1;
tochkaA:=1;
R:=sqrt(sqr(AX[tochkaA]-BX[tochkaB])+sqr(AY[tochkaA]-BY[tochkaB]));
  for i:=1 to n1 do
   begin
for j:=1 to n2 do
    begin
if R>(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
    begin
R:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
tochkaA:=i;
tochkaB:=j;
end; end; end;
Writeln('Точка из множества A ',tochkaA);
Writeln('Точка из множества B ',tochkaB);
writeln('Минимальное расстояние между ними ', R);
for i:=1 to n1 do
   begin
for j:=1 to n2 do
    begin
if R<(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
     begin
R:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
tochkaA:=i;
tochkaB:=j;
end; end; end;
Writeln('Точка из множества A ',tochkaA);
Writeln('Точка из множества B ',tochkaB);
Writeln('Максимальное расстояние между ними ', R);
end; end.


http://195.208.237.170/WDE/?shared=OlgaFrolova/лабораторная 7.pas


25101996
9 | Автор: OlgaFrolova | 2014-11-02, 12:21   |  Репутация: [ + 0 ]
7. Дана целочисленная матрица размера 5 x 10. Вывести номер ее первой строки и последнего столбца, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк или столбцов нет, то вывести 0.
Код
program Iren456
{***********************************}
{* laba#7 file iren456.pas==ver1.0 *}
{* Zaznoba Irina I-14-1 02.11.14   *}
{***********************************};
var
A: array[1..5,1..10] of integer;
i,j,b,c,d,e,f,flag: integer;
begin
flag:=0;
randomize;
for i := 1 to 5 do
for  j:= 1 to 10 do
a[i, j] := random (50) - 20; {заполнение массива}
for i:=1 to 5 do
begin    for j := 1 to 10 do
write (a[i, j]:6); {вывод массива}
writeln;
end;
for i:=1 to 5 do
begin
b:=0;
c:=0;
e:=0;
for j:=1 to 10 do
begin
if A[i,j]< 0 then
begin
c:=c+1;
e:=j;
end;
if A[i,j]> 0 then
begin
b:=b+1;
e:=j;
end;
end;
if b=c  then
begin
if flag=0 then
begin
d:=i;
flag:=1;
end;
end;
end;
for j:=1 to 10 do
begin
g:=0;
h:=0;
k:=0;
for i := 1 to 5 do
begin
if A[i,j]< 0 then
begin
g:=g+1;
k:=i;
end;
if A[i,j]>0 then
begin
h:=h+1;
k:=i;
end;
end;
if g=h  then
begin
m:=j;
end;
end;
writeln(d,' ',m);
end.

http://195.208.237.170/WDE/?shared=iren4562/laba7.pas


Ирина Зазноба
10 | Автор: iren456 | 2014-11-07, 09:08 | Изменено: iren456 - Пт, 2014-11-07, 19:21   |  Репутация: [ + 0 ]


Ирина Зазноба
10 | Автор: iren456 | 2014-11-07, 09:08 | Изменено: iren456 - Пт, 2014-11-07, 19:21   |  Репутация: [ + 0 ]
15. Даны множества A и B, состоящие соответственно из N1 и N2 точек. Найти минимальное и максимальное расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии.
http://195.208.237.170/WDE....ба7.pas
Код
program Olgafrolova;
var
AX: array [1..100] of real; AY: array [1..100] of real;
BX: array [1..100] of real; BY: array [1..100] of real;
n1,n2,tochkaA,tochkaB,i,j,k,m,generation,tochkaA1,tochkaB1:integer;
R,R1:real;
    begin
   writeln ('1 - автоматический ввод случайных чисел');
  writeln ('2 - ввод чисел вручную'); readln(generation);
if (generation=1) then begin
  writeln ('Введите количество точек для множества A>=2');
  readln(k);
  randomize;
  writeln ('Точки:');
  for i:=1 to k do
  begin
  AX[i]:=random(10);
  AY[i]:=random(10);
   writeln(AX[i],' ',AY[i],' ');
   end;
  writeln ('Введите количество точек для множества B>=2');
  readln(m);
  randomize;
  writeln ('Точки:');
  for j:=1 to m do
  begin
  BX[j]:=random(10);
  BY[j]:=random(10);
  writeln(BX[j],' ',BY[j],' ');
   end; R:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
R1:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
BEGIN
  for i:=1 to k do
   begin
for j:=1 to m do
begin
if R>(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
    begin
R:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
tochkaA:=i;
tochkaB:=j;
end;
if R1<(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
    begin
R1:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
tochkaA1:=i;
tochkaB1:=j;
end; end; end;
Writeln('Точка из множества A ',tochkaA,' Точка из множества B ',tochkaB);
writeln('Минимальное расстояние между ними ', R);
  Writeln('Точка из множества A ',tochkaA1,' Точка из множества B ',tochkaB1);
  writeln ('Максимальное расстояние между ними ', R1); end; END;
if (generation=2) then begin
             writeln('Введите n1 (n1<=100)');
             readln(n1);
              writeln('Значения множества точек А (X Y)');
for i:=1 to n1 do begin write(i,' )точка '); read(AX[i]); read(AY[i]); end;
             writeln('Введите n2 (n2<=100)');
             readln(n2);
writeln('Значения множества точек B (X Y)');
for i:=1 to n2 do begin write(i,' )точка '); read(BX[i]); read(BY[i]); end;
R:=sqrt(sqr(AX[i]-BX[i])+sqr(AY[i]-BY[i]));
R1:=sqrt(sqr(AX[i]-BX[i])+sqr(AY[i]-BY[i]));
BEGIN
  for i:=1 to n1 do
   begin
for j:=1 to n2 do
begin
if R>(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
    begin
R:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
tochkaA:=i;
tochkaB:=j;
end;
if R1<(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
    begin
R1:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
tochkaA1:=i;
tochkaB1:=j;
end; end; end;
Writeln('Точка из множества A ',tochkaA,' Точка из множества B ',tochkaB);
writeln('Минимальное расстояние между ними ', R);
  Writeln('Точка из множества A ',tochkaA1,' Точка из множества B ',tochkaB1);
  writeln ('Максимальное расстояние между ними ', R1); end; end; END.



25101996
11 | Автор: OlgaFrolova | 2014-11-09, 15:38   |  Репутация: [ + 0 ]
1. Дана матрица размера 5 x 10. В каждой строке найти количество элементов, больших среднего арифметического всех элементов этой строки. 


Код
program dimeshion;
      {('**************************************************');
       ('*      laba #7 file: di_7.pas == ver1.0          *');
       ('*                   laba #7                      *');
       ('*    Bazaliy E.V. Group: I-14-1 Date: 19/10/14   *');
       ('**************************************************');}
       uses crt;
       Const n=5; m=10;
       var A:array[1..n,1..m] of real;
       G:array[1..n] of real;
       Kolvo,i,j,b:integer;
       Str1,Str:real;
       label M1,M2;
       begin
       clrscr;
       writeln('Хотите ввести данные вручную? 1 - Да, 2 - Нет.');
       readln(b);
       if (b=1) then  goto M1
       else goto M2;
M1:   writeln('Введите элементы:');
       for i:=1 to n do
       for j:=1 to m do  begin
           write('A[',i,',',j,']= ');
           readln(A[i,j]);
       end;
M2:   begin
             randomize;
             for i:=1 to n do
             for j:=1 to m do begin
             A[i,j]:=random(10);
             end;
           for i:=1 to n do begin
                    Str:=0;
                    Str1:=0;
           for j:=1 to m do begin
           Str:=a[i,j]+Str;
           Str1:=Str/m;
           end;
               G[i]:=Str1;
           end;
           for i:=1 to n do begin
              Kolvo:=0;
           for j:=1 to m do begin
           if (A[i,j]>G[i]) then
              Kolvo:=Kolvo+1;
           end;
           writeln('V ',i,' stroke kolvo= ',Kolvo);
           end;
           end;
           readln;
end.


12 | Автор: dimeshion | 2014-11-09, 17:44   |  Репутация: [ + 2 ]
8. Дана целочисленная матрица размера M x N. Различные строки (столбцы) матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках (столбцах). Найти количество строк и столбцов, похожих на первую и последнюю строку.

Код
program Mr_pozitiv;
uses crt;
     //('*****************************************************');
      //('*        laba #7  file: laba7.pas == ver.1.0        *');
      //('*                     exercise                      *');
      //('*   Malevanny V. A.  Group I-14-1 Date: 09/11/14    *');
      //('*****************************************************');
var a :array[1..100,1..100] of byte; m,n,i,j,k,o :integer; x,y,w,v,z :set of byte;
     begin
        repeat
           clrscr;
          writeln('1 - Ввод значений вручную. 2 - Ввод значений рандомно');
          readln(o);
       until (o=1) or (o=2);
       write('Количество строк = ');
       readln(m);
       write('Количество столбцов = ');
       readln(n);
     if o=1 then //ввод значений вручную
        begin
          for i:=1 to m do
           for j:=1 to n do
             begin
                write('a[',i,',',j,']= ');
                readln(a[i,j]);
             end;
       end;
     if o=2 then //рандомные значения
        begin
            for i:=1 to m do
             for j:=1 to n do
                begin
                 a[i,j]:=random(6);
                end;
       end;
       writeln('Исходная матрица: '); // показываем исходную матрицу
       for i:=1 to m do
          begin
             for j:=1 to n do write(a[i,j]:4);
             writeln;
          end;
       x:=[];
       y:=[];
       for j:=1 to m do
          begin
             include(x,a[1,j]); //множество элементов первой строки матрицы
             include(y,a[m,j]); //множество элементов последней строки матрицы
          end;
       for i:=1 to n do
          begin
             include(w,a[i,1]); //множество элементов первого столбца матрицы
             include(v,a[i,n]); //множество элементов последнего столбца матрицы
          end;
       k:=0;
       for i:=2 to m do
          begin
               z:=[];
               for j:=1 to n do include(z,a[i,j]);
               if z=x then inc(k);
           end;
       writeln('Количество строк похожих на первую:',k); //кол-во строк похожих на первую
       k:=0;
       for i:=1 to m-1 do
          begin
             z:=[];
             for j:=1 to n do include(z,a[i,j]);
             if z=y then inc(k)
          end;
       writeln('Количество строк похожих на последнюю:',k); //кол-во строк похожих на последнюю
       k:=0;
       for j:=2 to n do
          begin
             z:=[];
             for i:=1 to m do include(z,a[i,j]);
             if z=w then inc(k);
          end;
       writeln('Количество столбцов похожих на первый ',k); //кол-во столбцов похожих на первый
       k:=0;
       for j:=1 to n-1 do
          begin
             z:=[];
             for i:=1 to m do include(z,a[i,j]);
             if z=v then inc(k);
          end;
       writeln('Количество столбцов похожих на последний ',k); //кол-во столбцов похожих на последний
     end.


perfect ;)
13 | Автор: Mr_Pozitiv | 2014-11-09, 18:19 | Изменено: Mr_Pozitiv - Вс, 2014-11-09, 18:21   |  Репутация: [ + 6 ]


perfect ;)
13 | Автор: Mr_Pozitiv | 2014-11-09, 18:19 | Изменено: Mr_Pozitiv - Вс, 2014-11-09, 18:21   |  Репутация: [ + 6 ]
9. Дана целочисленная матрица размера M x N. Найти количество ее строк и столбцов, все элементы которых различны.

Код
Program qwerty159;
uses crt;
const nmax=15;
Var a:array[1..nmax,1..nmax] of integer; {объявляем массив с типа integer}
     m,n,i,j,p,k:byte;
     f:boolean;
Begin
clrscr;
randomize;
Repeat
Write('Количество строк до ',nmax,' m=');
Readln(m);
until m in [1..nmax]; {если m входит в множество то условие истинно}  
Repeat
Write('Количество столбцов до ',nmax,' n=');
Readln(n);
until n in [1..nmax]; {если n входит в множество то условие истинно}
Writeln('Исходная матрица:');
for i:=1 to m do {начало цикла с повтороением от 1 раза до числа в переменной m}
begin
for j:=1 to n do {начало цикла с повтороением от 1 раза до числа в переменной n}
begin
a[i,j]:=random(50); {в элемент а нужно поместить случайное число из интервала [0,50]}
Write(a[i,j]:4); {вывод массива a}
end;
Writeln;
end;
k:=0;
for j:=1 to n do
begin
i:=1;
f:=true;
While(i<=m)and f do {пока i меньше или равно m, выполняется действие}
begin
for p:=1 to m do {начало цикла с повтороением от 1 раза до числа в переменной m}
if (p<>i)and(a[p,j]=a[i,j]) then f:=false; {если p<>i и a[p,j] равно a[i,j], то переменная f ложная}
if f then inc(i);
end;
if f then k:=k+1;
end;
Write('Количество столбцов, где все элементы различны=',k);
Readln;
end.


Контрольный расчёт:
14 | Автор: @qwerty159 | 2014-11-11, 20:58   |  Репутация: [ + 0 ]
9. Дана целочисленная матрица размера M x N. Найти количество ее строк и столбцов, все элементы которых различны.

Код
Program qwerty159;
const nmax=15;
Var a:array[1..nmax,1..nmax] of integer;
     m,n,i,j,k,p:byte;
     f:boolean;
Begin
randomize;
Repeat
Write('Количество строк до ',nmax,' m=');
Readln(m);
until m in [1..nmax];
Repeat
Write('Количество столбцов до ',nmax,' n=');
Readln(n);
until n in [1..nmax];
Writeln('Исходная матрица:');
for i:=1 to m do
Begin
for j:=1 to n do
Begin
a[i,j]:=random(20);
Write(a[i,j]:4);
end;
Writeln;
end;
Writeln;
p:=0;
for i:=1 to m do
Begin
f:=true;
j:=1;
While(j<=n)and f do
Begin
k:=1;
While(k<=n)and f do
if(a[i,k]=a[i,j])and(j<>k) then f:=false
else inc(k);
if f then inc(j);
end;
if f then inc(p);
end;
Writeln('Количество строк, в которых все элементы разные=',p);
p:=0;
for j:=1 to n do
Begin
f:=true;
i:=1;
While(i<=m)and f do
begin
k:=1;
While(k<=m)and f do
if(a[i,j]=a[k,j])and(i<>k) then f:=false
else inc(k);
if f then inc(i);
end;
if f then inc(p);
end;
Writeln('Количество столбцов, в которых все элементы разные=',p);
readln
end.


Контрольный расчёт:
15 | Автор: @qwerty159 | 2014-11-12, 19:10   |  Репутация: [ + 0 ]
13. Дана матрица размера M x N. Элемент называется локальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на 0.
Код
program laba7
{***************************************}
{*  laba#7 file:Bonyasik3.pas==ver1.0  *}
{*  Prokopenko Nikol I-14-1 04.10.14   *}
{***************************************};
  var x:Array[1..10,1..10] of integer;
      i,j:integer;
       begin
       writeln('Исходная матрица:');
       randomize;
         for i:=1 to 10 do
         for j:=1 to 10 do
         x[i,j]:=random(20);
         for i:=1 to 10 do
         begin for j:=1 to 10 do
        write(x[i,j]:10);
        writeln
        end;
        for i:=1 to 10 do
         begin
          for j:=1 to 1 do
           if (x[i,j]<x[i,j+1]) then x[i,j]:=0;
          for j:=10 to 10 do
           if (x[i,j]<x[i,j-1]) then x[i,j]:=0;
          for j:=2 to 9 do
           if ((x[i,j]<x[i,j-1]) and (x[i,j]<x[i,j+1])) then x[i,j]:=0;
         end;
       writeln('Матрица с локальными минимумами, замененными на 0:');
       for i:=1 to 10 do
         begin for j:=1 to 10 do
        write(x[i,j]:10);
        writeln
        end;
        end.

http://195.208.237.170/WDE/?shared=Bonyasik/Bonyasik7.pas
16 | Автор: Бонясик | 2014-11-14, 22:36   |  Репутация: [ + 0 ]
3. Дана квадратная матрица. Напишите программу, которая выводит значения всех миноров.

Код
program AlenaKit7;
const ksa=3;
const ksm=ksa-1;

type matrica=array[1..ksm,1..ksm] of integer;
var i,j,k,s,n2,det,n3,i1,j1,k1,s1,l,f: integer;
b:matrica;
a: array[1..ksa,1..ksa] of integer;

procedure vich(a:matrica; var b:matrica; ksa,i,j:integer);
     var ai,aj,bi,bj:integer;
begin
     bi:=0;
     for ai:=1 to ksa-1 do begin
         if (ai=i) then bi:=1;
          bj:=0;
         for aj:=1 to ksa-1 do begin
             if (aj=j) then bj:=1;
             b[ai,aj]:=a[ai+bi,aj+bj];
         end;
     end;
end;

Function Dt(var a:matrica; ksb:integer):integer;
     var i,j,n,m:integer;
     b:matrica;
begin
     n:=0;
     m:=1;
     if (ksb<1) then begin
      writeln('Детерминанта нет');
     end;
     if (ksb=1) then
        n:=a[1,1]
     else if (ksb=2) then
      n:=a[1,1]*a[2,2]-a[2,1]*a[1,2]
     else
         for i:=1 to ksb do begin
             vich(a,b,ksb,i,1);
             n:=n+m*a[i,1]*Dt(b,ksb-1);
             m:=-m;
         end;
     Dt:=n;
end;

begin
     Writeln('хотите ввести данные сами? да-1, нет-2');
     readln(f);
     If (f=1) then
      for i:=1 to ksa do begin
       for j:=1 to ksa do begin
        read(a[i,j]);
            
                            end;
                    end
         else begin
       randomize;
       for i:=1 to ksa do begin
           for j:=1 to ksa do begin
               a[i,j]:=random(10);
               write(a[i,j]:3);
           end;
           writeln;
end;
     end;
           n3:=ksm;
    k:=1;
    s:=1;
    i1:=1;
    j1:=1;
    for n2:=1 to ksa*ksa do begin
        for i:=1 to ksa do begin
            for j:=1 to ksa do begin
                if ((i<>k) and (j<>s)) then begin
                   k1:=k;
                   s1:=s;
                   b[i1,j1]:=a[i,j];
                   inc(l);
                   inc(j1);
                end;
            end;
            if l<>0 then
               if i1<>ksm then begin
                  if l<>0 then
                     inc(i1);
                  l:=0;
               end
               else begin
                    i1:=1;
                    l:=0;
               end;
            j1:=1;
        end;
        if i>1 then
           inc(s);
        if s>ksa then begin
           inc(k);
           s:=1;
        end;
        for i:=1 to ksm do begin
            for j:=1 to ksm do begin
            end;
        end;
        det:=Dt(b,n3);
        writeln('Minor[',k1,']','[',s1,']=',det);
    end;
       
end.
               
       end;



AlenaKit♥
17 | Автор: AlenaKit | 2014-11-18, 22:00 | Изменено: AlenaKit - Вт, 2014-11-18, 22:07   |  Репутация: [ + 12 ]
15. Даны множества A и B, состоящие соответственно из N1 и N2 точек. Найти минимальное и максимальное расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии.
http://195.208.237.170/WDE/?shared=OlgaFrolova/Program7.pas
Код
program Olgafrolova;
  var
  AX: array [1..100] of real; AY: array [1..100] of real;
  BX: array [1..100] of real; BY: array [1..100] of real;
  n1,n2,tochkaA,tochkaB,i,j,k,m,generation,tochkaA1,tochkaB1:integer;
  R,R1:real;
  Label 1;
     begin
  begin
    writeln ('1 - автоматический ввод случайных чисел');
   writeln ('2 - ввод чисел вручную'); readln(generation);
  if (generation=1) then begin
   writeln ('Введите количество точек для множества A>=2');
   readln(k);
   randomize;
   writeln ('Точки:');
   for i:=1 to k do
   begin
   AX[i]:=random(10);
   AY[i]:=random(10);
    writeln(AX[i],' ',AY[i],' ');
    end;
   writeln ('Введите количество точек для множества B>=2');
   readln(m);
   randomize;
   writeln ('Точки:');
   for j:=1 to m do
   begin
   BX[j]:=random(10);
   BY[j]:=random(10);
   writeln(BX[j],' ',BY[j],' ');
    end;
   goto 1; end
else
              writeln('Введите k (k<=100)');
              readln(k);
               writeln('Значения множества точек А (X Y)');
  for i:=1 to k do begin write(i,' )точка '); read(AX[i]); read(AY[i]); end;
              writeln('Введите m (m<=100)');
              readln(m);
  writeln('Значения множества точек B (X Y)');
  for i:=1 to m do begin write(i,' )точка '); read(BX[i]); read(BY[i]); end;
                          1: begin
   R:=sqrt(sqr(AX[1]-BX[1])+sqr(AY[1]-BY[1]));
  R1:=sqrt(sqr(AX[1]-BX[1])+sqr(AY[1]-BY[1]));
for i:=1 to k do
    begin
  for j:=1 to m do
  begin
  if R>(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
     begin
  R:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
  tochkaA:=i;
  tochkaB:=j;
  end;
  if R1<(sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]))) then
     begin
  R1:=sqrt(sqr(AX[i]-BX[j])+sqr(AY[i]-BY[j]));
  tochkaA1:=i;
  tochkaB1:=j;
  end; end; end;
  Writeln('Точка из множества A ',tochkaA,' Точка из множества B ',tochkaB);
  writeln('Минимальное расстояние между ними ', R);
   Writeln('Точка из множества A ',tochkaA1,' Точка из множества B ',tochkaB1);
   writeln ('Максимальное расстояние между ними ', R1);
  end; end; end.



25101996
18 | Автор: OlgaFrolova | 2014-11-19, 18:18   |  Репутация: [ + 0 ]
Код
program torres;
var
X: array [1..10] of real;
Y: array [1..10] of real;
n,T1,T2,i,j,generation:integer;
R,R1:real;
Label 1;
begin
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:=sqrt(sqr(X[1]-X[1])+sqr(Y[1]-Y[1]));
R1:=sqrt(sqr(X[1]-X[1])+sqr(Y[1]-Y[1]));
for i:=1 to N do
begin
for j:=1 to N do
begin
if R<(sqrt(sqr(X[i]-X[j])+sqr(Y[i]-Y[j]))) then
begin
R:=sqrt(sqr(X[i]-X[j])+sqr(Y[i]-Y[j]));
T1:=i;
T2:=j;
end;

if R1>(sqrt(sqr(X[i]-X[j])+sqr(Y[i]-Y[j]))) then
begin
R1:=sqrt(sqr(X[i]-X[j])+sqr(Y[i]-Y[j]));
T1:=i;
T2:=j;
end; end; end;

Writeln;
Writeln('Ответ');
Writeln('Пара точек',t1,' ',t2);
Writeln('Максимальное расстояние между ними ',R);
Writeln;
Writeln('Ответ');
Writeln('Пара точек',t1,' ',t2);
Writeln('Минимальное расстояние между ними ',R1);
end;
end;
end.
16. Дано множество A из N точек. Найти такую точку из данного множества, сумма расстояний от которой до остальных его точек минимальна и максимальна, и сами эти суммы.

19 | Автор: torres | 2014-11-23, 13:42 | Изменено: torres - Вс, 2014-11-23, 13:49   |  Репутация: [ + 0 ]
10. Дана целочисленная матрица размера M x N. Вывести номер ее первой строки, содержащей максимальное количество одинаковых элементов.

Код
var r,a,m,n,b,nom,х,max:integer;
             i: array [1..100,1..100] of integer;
Begin
read(m,n);
for r:=1 to m do begin readln; х:=0;
            for a:=1 to n do begin
                     read(i[r,a]);
                     for b:=a downto 1 do if i[r,a]=i[r,b] then inc(х);
            end;
          if х>max then nom:=r; end; readln;
        writeln('номер строки',nom);

end.

20 | Автор: Awesome | 2014-11-26, 17:31 | Изменено: Awesome - Ср, 2014-11-26, 21:51   |  Репутация: [ + 2 ]
Форум ПРОГРАММИСТОВ » КУРС ОПР - ПАСКАЛЬ » Лабораторные работы » Лабораторная работа №7 (Одно и двумерные массивы)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: