| Лабораторная работа №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. Посчитать ее определитель.
 |  
|  |  | 
| 
| Задание №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.
 
   |  
|  |  | 
| 
| 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.
     |  
|  |  | 
| 
| Код 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).
     |  
|  |  | 
| 
| Задание 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
 
 
     |  
|  |  | 
| 
| 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
 |  
|  |  | 
| 
| 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
 |  
|  |  | 
| 
| 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.
 
    |  
|  |  | 
| 
| 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.
 Контрольный расчёт:
 
    |  
|  |  | 
| 
| 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.
 Контрольный расчёт:
 
    |  
|  |  | 
| 
| 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
 |  
|  |  | 
| 
| 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
 |  
|  |  | 
| 
| 16. Дано множество A из N точек. Найти такую точку из данного множества, сумма расстояний от которой до остальных его точек минимальна и максимальна, и сами эти суммы.Код 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.
   
№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 ] |  
|  |  |