4. Заключение
В процессе написания программ была применена циклическая конструкция, а именно цикл FOR. В первом задании с помощью цикла сравнивалась разность анализируемого числа с квадратом случайного числа. Во-второй же программе конструкция использовалась поиска элементов строки, соотвутсвующих регулярному выражению.
Кроме того, в первой программе используются функции abs_difference и _print_.
Приложение а листинг программы №1
var
n, j, minimum_value_number, minimum_value, random_int, sqr_value, difference, minimum_value_difference, minimum_value_sqr: integer;
function abs_difference(k: integer): integer;
var
// Объявляем переменную счетчика и переменную для временного значения результата вычисления разницы полученного числа и квадрата числа
i, tmp: integer;
// Объявляем переменную результата
begin
// задаем значение результата заведомо большим
difference := 9999;
// перебираем в цикле значения от 1 до 100 для возведения в квадрат и последуещего сравнения с переданным значением для функции
for i := 1 to 100 do
begin
// абсолютное значение разности переданного числа и квадрата числа
tmp := abs(trunc(k) - sqr(i));
// Если конечное значение разности больше временного,то присваиваем конечному значению значение временной переменной tmp
if tmp <= difference then
begin
difference := tmp;
sqr_value := i;
// если разность равна нулю, то выходим из цикла. Минимальное значение найдено.
if difference = 0 then break;
end;
end;
end;
// функция для вывода результатов обработки
function _print_(): integer;
begin
println('Порядковый номер числа, наиболее близкого к квадрату какого-либо числа:', minimum_value_number);
println('Это число:', minimum_value);
println('Квадрат числа от которого найдена разность:', minimum_value_sqr);
println('Разность составила:', minimum_value_difference);
end;
begin
// Запрашиваем количество чисел и считвыем его из стандартного ввода в перменную n
writeln('Введите количество чисел:');
readln(n);
// Порядковый номер числа с минимальной разницей. Присвоено заведомо малое значение
minimum_value_number := 0;
// Число с минимальной разницей. Присвоено заведомо большое значение
minimum_value_difference := 999;
// Цикл ввода чисел для обработки
for j := 1 to n do
begin
// Читаем стандарнтый ввод в переменную
writeln('Введите число для анализа:');
readln(random_int);
// Запускаем функцию проверки разности
abs_difference(random_int);
// Если значение разности полученное функцией abs_difference меньше или равно искомому значению минимальной разности
if difference <= minimum_value_difference then
begin
// То присваиваем переменным значения полученные функцией abs_difference
minimum_value := random_int;
minimum_value_number := j;
minimum_value_difference := difference;
minimum_value_sqr := sqr_value;
// Если значение минимаьной разности равно нулю, то предполагаем,что искомое минимальное значение разности найдено
// и выводим все полученные зачения с помощью функции _print_
if minimum_value_difference = 0 then _print_
end;
end;
// Если нулевого значения разности не получено, то выводим накопленные результаты только один раз в конце обработки всех чисел
if minimum_value_difference <> 0 then _print_
end.