Составить три процедуры для двумерных массивов 2)поиск макс. элемента (выводим в два одномерных массива максимальные значения по строкам и столбцам) 3)сортировка(как душе угодно) 4)поиск по условию (есть определенное значение или нет)
Конечно, на основе функций решение было бы элегантнее, но требовались процедуры...
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию!
procedure GetMax(a:array[,] of integer; var mr,mc:array of integer); // максимумы по строкам mr и столбцам mc begin mr:=a.Rows.Select(r->r.Max).ToArray; mc:=a.Cols.Select(c->c.Max).ToArray; end;
procedure MatrSort(a:array[,] of integer); // сортировка срок по первой колонке begin for var i:=0 to a.RowCount-2 do for var k:=0 to a.RowCount-2-i do if a[k,0]>a[k+1,0] then a.SwapRows(k,k+1); end;
procedure IsCont(n:integer; a:array [,] of integer; var res:boolean); // есть ли элемент n в массиве a? begin res:=a.ElementsByRow.Contains(n) end;
begin var n:=ReadInteger('Количество строк в массиве:'); var m:=ReadInteger('Количество столбцов в массиве:'); Writeln('*** Исходный массив [',n,',',m,'] ***'); var a:=MatrRandom(n,m,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var vr:=new integer[n]; var vc:=new integer[m]; GetMax(a,vr,vc); Write('Вектор максимумов по строкам: '); vr.Println; Write('Вектор максимумов по столбцам: '); vc.Println; MatrSort(a); Writeln('*** отсортированный массив ***'); a.Println(4); Writeln(4*a.ColCount*'-'); var k:=ReadInteger('Введите значение элемента для поиска:'); var q:boolean; IsCont(k,a,q); if q then Writeln('Массив содержит введенное значение') else Writeln('Массив не содержит введенного значения') end.
Пример Количество строк в массиве: 4 Количество столбцов в массиве: 7 *** Исходный массив [4,7] *** -96 63 6 -96 -21 -61 -54 31 -20 63 -48 70 13 48 72 -27 -68 -52 32 15 -58 -71 -86 45 49 40 -64 -2
const n = 10000;//Не изменяемая по ходу программы переменная var a: array[1..n] of integer; b: array[1..10]of integer; c: array[1..10]of integer; i, s, v: integer; begin for i := 1 to 10 do //Заполнение массива с числами от 1 до 10 c[i] := i; for i := 1 to n do //Заполнение массива a[i] := random(10) + 1; //Делается для того чтобы в массиве не было нулей for i := 1 to n do case a[i] of 1: b[1] := b[1] + 1; 2: b[2] := b[2] + 1; 3: b[3] := b[3] + 1; 4: b[4] := b[4] + 1; 5: b[5] := b[5] + 1; 6: b[6] := b[6] + 1; 7: b[7] := b[7] + 1; 8: b[8] := b[8] + 1; 9: b[9] := b[9] + 1; 10: b[10] := b[10] + 1; End; for i := 1 to 10 do for s := 1 to 9 do if b[s] > b[s + 1] then begin v := b[s]; b[s] := b[s + 1]; b[s + 1] := v; v := c[s]; c[s] := c[s + 1]; c[s + 1] := v; end; writeln(c[10], ' - их ', b[10]); end.
РЕФЕРАТ Много программ это хорошо, но если они развиваться тебе в твоей сфере образования. Но иногда много программ ухудшает работо компьютера, телефона ноутбука и любые другие гаджеты. Иногда это ухудшает разрядность процессора. Разрядность- максимальное количество бит информации, которые могут обрабатываться и передаваться процессором одновременно. До недавнего времени все процессоры были 32-битными эта разрядность была достигнута уже 10-ток лет назад. Сейчас процессоры бывают 64-битные, 128-битные и т.д. Что для большей работо компьютера.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
procedure GetMax(a:array[,] of integer; var mr,mc:array of integer);
// максимумы по строкам mr и столбцам mc
begin
mr:=a.Rows.Select(r->r.Max).ToArray;
mc:=a.Cols.Select(c->c.Max).ToArray;
end;
procedure MatrSort(a:array[,] of integer);
// сортировка срок по первой колонке
begin
for var i:=0 to a.RowCount-2 do
for var k:=0 to a.RowCount-2-i do
if a[k,0]>a[k+1,0] then a.SwapRows(k,k+1);
end;
procedure IsCont(n:integer; a:array [,] of integer; var res:boolean);
// есть ли элемент n в массиве a?
begin
res:=a.ElementsByRow.Contains(n)
end;
begin
var n:=ReadInteger('Количество строк в массиве:');
var m:=ReadInteger('Количество столбцов в массиве:');
Writeln('*** Исходный массив [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var vr:=new integer[n];
var vc:=new integer[m];
GetMax(a,vr,vc);
Write('Вектор максимумов по строкам: '); vr.Println;
Write('Вектор максимумов по столбцам: '); vc.Println;
MatrSort(a);
Writeln('*** отсортированный массив ***');
a.Println(4); Writeln(4*a.ColCount*'-');
var k:=ReadInteger('Введите значение элемента для поиска:');
var q:boolean;
IsCont(k,a,q);
if q then Writeln('Массив содержит введенное значение')
else Writeln('Массив не содержит введенного значения')
end.
Пример
Количество строк в массиве: 4
Количество столбцов в массиве: 7
*** Исходный массив [4,7] ***
-96 63 6 -96 -21 -61 -54
31 -20 63 -48 70 13 48
72 -27 -68 -52 32 15 -58
-71 -86 45 49 40 -64 -2
Вектор максимумов по строкам: 63 70 72 49
Вектор максимумов по столбцам: 72 63 63 49 70 15 48
*** отсортированный массив ***
-96 63 6 -96 -21 -61 -54
-71 -86 45 49 40 -64 -2
31 -20 63 -48 70 13 48
72 -27 -68 -52 32 15 -58
Введите значение элемента для поиска: 70
Массив содержит введенное значение