PASCAL ABC NET У пользователя запрашивается длинна массива, далее генерируется массив из вещественных чисел, для которой определяются 2 пользовательские функции:
1.вычисляет квадраты всех элементов массива, и формирует 2 массив.
2.вычисляет среднее геометрическое для всех выражений
function AutoMorph(n:integer):boolean;
begin
var s1:=n.ToString;
Result:=(s1=(n*n).ToString.Right(s1.Length))
end;
begin
var a,b:integer;
Write('Введите а и b: '); Read(a,b);
for var i:=a to b do
if AutoMorph(i) then Print(i)
end.
Тестовое решение:
Введите а и b: 1 10000
1 5 6 25 76 376 625 9376
Попробовал переписать функцию в более примитивный вид. По-моему, она не стала проще, только удлинилась...
function AutoMorph(n:integer):boolean;
begin
var s1:=IntToStr(n); // n переводим в строковое представление
var s2:=IntToStr(n*n); // n*n переводим в строковое представление
var l1:=Length(s1); // длина строки s1
s2:=RightStr(s2,l1); // правые l1 символов из s2
Result:=(s1=s2)
end;