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

code: #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.      
Поделиться:

Похожие статьи: