1. даны два одномерных массива разной размерности. для каждого из заданных одномерных массивов выполнить: последовательно переписать в другой массив отрицательные элементы начального массива. с применение подпрограмм и процедур желательно
procedure FillArray(var a: ta; n, min, max: integer); var i, k: integer; begin k := max - min + 1; for i := 1 to n do a[i] := Random(k) + min end;
procedure WriteArray(a: ta; n, p: integer); var i: integer; begin for i := 1 to n do Write(a[i]:p); Writeln end;
procedure CopyNegative(var a, b: ta; m: integer; var n: integer); var i: integer; begin n := 0; for i := 1 to m do if a[i] < 0 then begin Inc(n); b[n] := a[i] end end;
var n: integer; x, y: ta;
begin Randomize; FillArray(x, 10, -50, 50); Writeln('Исходный массив'); WriteArray(x, 10, 4); CopyNegative(x, y, 10, n); Writeln('Массив из отрицательных элементов'); WriteArray(y, n, 4); FillArray(x, 8, -200, 100); Writeln('Исходный массив'); WriteArray(x, 12, 5); CopyNegative(x, y, 12, n); Writeln('Массив из отрицательных элементов'); WriteArray(y, n, 5); end.
//PascalABC.Net 3.0, сборка 1064 type IntArray = array of integer;
var rows, cols: integer; M: array of IntArray;
begin Write('Количество строк и столбцов матрицы: '); Read(rows, cols); var Avg: array of double := new double[cols]; M := new IntArray[rows]; SetLength(Avg, cols); for var i := 0 to rows - 1 do begin M[i] := ArrRandom(cols, -25, 25); M[i].Println(#9) end; for var j := 0 to cols - 1 do Avg[j] := Range(0, rows - 1).Select(x -> M[x, j]).Average; Writeln('Наименьшее среднее по столбцам равно ', Avg.Min) end.
Pascalabc.net var a: array[1..10000] of integer; kz,maxp,n,i,j: integer; begin i: =0; maxp: =integer.minvalue; writeln ('готов к приему чисел'); repeat i: =i+1; readln (a[i]); until a[i]=0; n: =i-1; readln (kz); for i: =1 to n-1 do for j: =2 to n do if maxp< (a[i]*a[j]) then maxp: =(a[i]*a[j]); writeln ('получено ',n,' чисел'); writeln; writeln ('полученное контрольное значение: ',kz); writeln; writeln ('вычисленное контрольное значение: ',maxp); writeln; if kz=maxp then writeln ('контроль пройден') else writeln ('контроль не пройден'); end. результаты: 1) готов к приему чисел 1 2 3 4 5 0 20 получено 5 чисел полученное контрольное значение: 20 вычисленное контрольное значение: 20 контроль пройден 2) готов к приему чисел 1 2 3 4 5 6 0 20 получено 6 чисел полученное контрольное значение: 20 вычисленное контрольное значение: 30 контроль не пройден
nn = 20;
type
ta = array[1..nn] of integer;
procedure FillArray(var a: ta; n, min, max: integer);
var
i, k: integer;
begin
k := max - min + 1;
for i := 1 to n do a[i] := Random(k) + min
end;
procedure WriteArray(a: ta; n, p: integer);
var
i: integer;
begin
for i := 1 to n do Write(a[i]:p);
Writeln
end;
procedure CopyNegative(var a, b: ta; m: integer; var n: integer);
var
i: integer;
begin
n := 0;
for i := 1 to m do
if a[i] < 0 then
begin
Inc(n);
b[n] := a[i]
end
end;
var
n: integer;
x, y: ta;
begin
Randomize;
FillArray(x, 10, -50, 50);
Writeln('Исходный массив');
WriteArray(x, 10, 4);
CopyNegative(x, y, 10, n);
Writeln('Массив из отрицательных элементов');
WriteArray(y, n, 4);
FillArray(x, 8, -200, 100);
Writeln('Исходный массив');
WriteArray(x, 12, 5);
CopyNegative(x, y, 12, n);
Writeln('Массив из отрицательных элементов');
WriteArray(y, n, 5);
end.
Тестовое решение:
Исходный массив
-12 17 35 -4 -45 8 33 -8 -47 -4
Массив из отрицательных элементов
-12 -4 -45 -8 -47 -4
Исходный массив
-150 -174 92 -168 69 -60 -165 -78 -47 -4 0 0
Массив из отрицательных элементов
-150 -174 -168 -60 -165 -78 -47 -4