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