Дан вектор Х[1:18]. Подсчитать количество элементов, входящих в интервалы [-5:0] и [3:8]. Если количество элементов в интервале [3:8] больше, чем в интервале [-5:0], то из элементов интервала [3:8], умноженных на 10, сформировать новый вектор Y. Иначе в вектор добавить 10-й и 20-й элементы, равные сумме предыдущих элементов и из него сформировать матрицу Z[1:4, 1:5] — Pascal(Паскаль)

uses crt;
const max=20;
var x,y:array[1..max] of integer;
    z:array[1..4,1..5] of integer;
    n,m,i,j,k1,k2:byte;
    s:integer;
begin
clrscr;
randomize;
n:=18;k1:=0;k2:=0;
writeln('Вектор X:');
for i:=1 to n do
 begin
  x[i]:=random(21)-10;
  write(x[i]:4);
  if (x[i]>=-5)and(x[i]<=0) then k1:=k1+1;
  if x[i] in [3..8] then k2:=k2+1;
 end;
writeln;
writeln('Количество в интервале [-5..0]=',k1);
writeln('Количество в интервале [ 3..8]=',k2);
writeln;
if k1>k2 then
 begin
  writeln('В интервале [-5..0] элементов больше');
  {создание вектора из элементов от 3 до 8, умноженных на 10}
  m:=0;
  for i:=1 to n do
  if x[i] in [3..8] then
   begin
    m:=m+1;
    y[m]:=x[i]*10;
   end;
  writeln('Вектор Y:');
  for i:=1 to m do
  write(y[i]:4);
 end
else
 begin
  writeln('В интервале [-5..0] элементов не больше');
  {вычисление суммы первых 9 и вставка ее на 10 место}
  s:=0;
  for i:=1 to 9 do
  s:=s+x[i];
  n:=n+1;
  for i:=n downto 11 do
  x[i]:=x[i-1];
  x[10]:=s;
  {вычисление суммы всех 19 элементов и вставка ее в конец}
  s:=0;
  for i:=1 to n do
  s:=s+x[i];
  n:=n+1;
  x[n]:=s;
  writeln('Вектор X после вставки 10 и 20 элементов:');
  for i:=1 to n do
  write(x[i]:4);
  writeln;
  writeln;
  {формирование матрицы}
  writeln('Матрица Z:');
  for i:=1 to 4 do
   begin
    for j:=1 to 5 do
     begin
      z[i,j]:=x[j+5*(i-1)];
      write(z[i,j]:4);
     end;
    writeln;
   end;
 end;
readln
end.

Leave a Comment

+ 11 = 12