Текст программы на языке Паскаль



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


Дата добавления: 2018-04-04; просмотров: 138;