С клавиатуры вводятся длина (<=100) вектора и его (целые) элементы. Удалить из вектора все элементы, у которых сумма всех делителей больше 1
Условие Задачи:
С клавиатуры вводятся длина (<=100) вектора и его (целые) элементы. Удалить из вектора все элементы, у которых сумма всех делителей больше 10. Результаты вывести на экран.
program PascalGuru; label 1; var X:array[1..100] of integer; {описание переменных} i,j,n:integer; {-----------------------------------------------------} function summadel(N:integer):integer; {функция проверяет - является ли число "x" совершеннымы} var i,sum:integer; begin sum:=0; For i := 1 To N Do If (N Div i) = (N / i) Then sum:=sum+i;
begin write('Razmer massiva: '); readln(n); {ввод размерности массива}
writeln ('Vvedite elementy massiva X: '); for i:=1 to n do begin write ('X[',i,']='); readln (X[i]); end; {ввод элементов массива}
writeln ('Vot vvedennyi vami massiv X: '); for i:=1 to n do write (X[i]:4,' '); {вывод элементов массива}
1: {метка возврата на этот этап - после удаления эл-та массива} for i:=1 to n do {цикл прохода по всему массиву} if summadel(X[i])>10 then {условие - сумма всех делителей больше 10} begin For j:=i+1 to n do X[j-1]:=X[j]; {тогда удаляем текущий элемент} dec(n); {размерность массива уменьшаем на "-1"} goto 1; {после удаления возвращаемся к метке, чтобы вновь пройти по массиву и произвести проверку} end;
writeln; writeln ('Vot preobrazovannyi massiv X: '); for i:=1 to n do write (X[i]:4,' '); {вывод элементов преобразованного массива (т.е. после удаления)}