Program Example_15;
Var n, i, k, Min : integer;
t : boolean;
A : array [1..30] of integer;
Begin
writeln;
write(‘Введите количество элементов массива N = ‘);
read(n);
write(‘Введите ‘, n, ‘натуральных чисел - элементов массива A:‘);
For i := 1 to n do
read(A[i]);
Min := A[1];
For i := 2 to n do
If A[i] < Min then Min := A[i];
For k := Min downto 1 do begin
t := true;
For i := 1 to n do
If A[i] mod Max <> 0 then t := false;
If t = true then break;
end;
writeln(‘Наибольший общий делитель равен ‘, k );
readln
end.
Данные для тестирования
1) Для n = 8, A = {15, 27, 18, 21, 12, 6, 51, 48}
ð Наибольший общий делитель равен 3
2) Для n = 5, A = {15, 75, 30, 45, 90}
ð Наибольший общий делитель равен 15
Пример 7.2 . Дан массив целых чисел {ai}, i = 1, 2, ... , n. Вывести те из них, которые встречаются в массиве по одному разу.
Решение задачи
Выберем схему решения поставленной задачи.
Ввод элементов массива {a} выполним обычным образом - с помощью оператора цикла с параметром (for).
Затем, с помощью оператора цикла с параметром (for) будем перебирать все элементы данного массива. Для каждого элемента введём переменную k с начальным значением k=0. Во вложенном цикле (также с помощью оператора цикла for) каждый элемент массива будем сравнивать со всеми элементами этого массива и, как только будет найден равный ему элемент, к переменной k будем прибавлять 1.
Если, после сравнения очередного элемента с элементами всего массива, значение переменной k будет равно 1, следовательно, он оказался равен только самому себе. Выводим этот элемент на экран.
Блок-схема алгоритма – приведена на рисунке 7.1.
Текст программы на языке Паскаль
Program Example_16;
Var n, i, j, k : integer;
A : array [1..30] of integer;
Begin
writeln;
write(‘Введите количество элементов массива N = ‘);
read(n);
write(‘Введите ‘, n, ‘целых чисел - элементов массива A:‘);
For i := 1 to n do
read(A[i]);
writeln(‘В данном массиве по одному разу встречаются:‘);
For i := 1 to n do begin
k := 0;
For j := 1 to n do
If A[i] = A[j] then k := k + 1;
If k = 1 then writeln(‘ ‘, A[i] );
end;
readln
end.
Рисунок 7.1 – Блок-схема алгоритма для примера 7.2
Данные для тестирования
1) Для n = 10, A = {1, 2, 3, 4, 1, 3, 5, 4, 7, 3}
ð В данном массиве по одному разу встречаются
2 5 7
2) Для n = 10, A = {1, 5, 7, 5, 3, -1, 4, 5, 7, -3}
ð В данном массиве по одному разу встречаются
1 3 -1 4 -3
ПРОЦЕДУРЫ И ФУНКЦИИ
Подпрограммой называют обособленную, оформленную в виде отдельной синтаксической конструкции и снабжённую именем часть программы. Использование подпрограмм позволяет, сосредоточив в них подробное описание некоторых операций, в основной программе только указывать имена подпрограмм, чтобы выполнить эти операции. Такие вызовы подпрограммы возможны неоднократно из разных участков программы, причём при вызове подпрограмме можно передать некоторую информацию (различную в разных вызовах), чтобы одна и та же подпрограмма выполняла решение подзадачи для разных случаев.
Подпрограммы в Турбо Паскале реализованы посредством процедур и функций. Имея один и тот же смысл и аналогичную структуру, процедуры и функции различаются назначением и способом их использования.
Приведём примеры решения задач с использованием процедур и функций.
Пример 8.1 . Описать функцию SumDigit(K), находящую сумму цифр целого положительного числа K. Используя эту функцию, найти количество цифр для каждого из заданных целых положительных чисел {А i} i = 1, 2, ... , n.
Решение задачи
Выберем схему решения поставленной задачи.
В функции SumDigit(K) введём переменную S для накопления суммы цифр (начальное значение S=0). С помощью циклической структуры while и операций div и mod организуем выделение очередной цифры. Самую правую цифру числа можно получить, разделив нацело заданное число K на 10 и взяв остаток от деления. Результат целочисленного деления будем сохранять в этой же переменной K. Цикл будем выполнять пока переменная K будет больше нуля. Последним выполнимым оператором функции будет присвоение значения полученной суммы S имени функции.
В основной программе после того как будут введены все элементы массива {А}, с помощью оператора цикла с параметром (for) для каждого элемента массива организуем обращение к функции SumDigit, передавая в качестве параметра очередной элемент, и вывод результата.
Блок-схемы алгоритмов основной программы и функции SumDigit( K) – представлены на рисунке 8.1
Дата: 2019-03-05, просмотров: 188.