Вводится длина вектора, состоящего из целых чисел, и его элементы. Удалить все элементы, кроме имеющих заданное произведение цифр — Pascal(Паскаль)

program lb1;

var
  m: array [1 .. 100] of integer;
  i, j, n, zc: integer;

function mul(n: integer): integer;
{ функция, определяющая ПРОИЗВЕДЕНИЕ цифр числа }
var
  c, err, i, sum: integer;
  s: string;
begin
  str(n, s);

  sum := 1;
  for i := 1 to length(s) do
  begin
    val(s[i], c, err);
    sum := sum * c;
  end;
  mul := sum;
end; { *****************конец функции************* }

Procedure Deletion(K: integer); { процедура удаляющая элементы массива }
var
  i: integer;
begin
  For i := K + 1 to n do
    m[i - 1] := m[i];
end; { *****************конец проседуры************* }

begin
  write('Vvedite N (razmer massiva): ');
  readln(n); { считываем размер массива }
  for i := 1 to n do
  begin
    write('M[', i, ']=');
    readln(m[i]);
  end; { считываем сам масссив }
  writeln;
  for i := 1 to n do
    write(m[i], ' '); { показываем на экране этот масссив }
  writeln;
  writeln;

  write('Vvedite zadannoe CISLO "zadannoe proizvedenie tsifr": ');
  readln(zc); { считываем число с экрана "Значение" }

  for i := 1 to n do { проходим по масссиву }
    if mul(m[i]) <> zc then { смотрим числа не равные произведению введённого }
    begin
      Deletion(i);
      dec(n);
    end; { удаляем такие элементы с массива }

  writeln('Massiv posle ydalenia: ');
  for i := 1 to n do
    write(m[i], ' '); { показываем на экране ИСХОДНЫЙ масссив }

  readln;

end.

Leave a Comment

39 − 33 =