Тема. Подпрограммы. Средства отладки Delphi.
Задание. Решить задачу, используя процедуру или функцию.
Ввести натуральное число N. Среди чисел 1, 2, ...N найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел.
Объявляем переменные необходимые для работы программы:
var
i,n:integer;
res :string;
Напишем функцию находящую сумму квадратов равную заданному натуральному числу. Для этого напишем два вложенных цикла и переберем все возможные значения:
function f(i2:integer;var s:string):boolean;
var j,l:integer;
begin
for j:=1 to i2 do
for l:=1 to i2 do
begin
if j*j+l*l=i2 then //ищем сумму квадратов
begin
result:=true; //если есть сумма квадратов возращаем True
s:=inttostr(i2)+'='+inttostr(j)+'^2+'+inttostr(l)+'^2'; //создаем формулу
end;
end;
end;
В основной программе создадим цикл для всех натуральных чисел до заданного и определим квадраты чисел. Результат выведем на экран:
for i:=1 to n do
begin
if f(i,res) then writeln(res); //проверям все натуральные числа до N
end;
Исходный код программы для Delphi 7:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
var
i,n:integer;
res :string;
function f(i2:integer;var s:string):boolean;
var j,l:integer;
begin
for j:=1 to i2 do
for l:=1 to i2 do
begin
if j*j+l*l=i2 then //ищем сумму квадратов
begin
result:=true; //если есть сумма квадратов возращаем True
s:=inttostr(i2)+'='+inttostr(j)+'^2+'+inttostr(l)+'^2'; //создаем формулу
end;
end;
end;
begin
writeln('Vvedite N');
Readln(n);
for i:=1 to n do
begin
if f(i,res) then writeln(res); //проверям все натуральные числа до N
end;
Readln;
end.
Блок схемы:
|