double arrow

Образцы решения задачи


Задача № 1. Определить количество и сумму цифр в числе.

Постановка задачи

Для решения данной задачи воспользуемся типовыми алгоритмами нахождения суммы и количества цифр в числе, описанные в предыдущей работе, оформив их в виде подпрограмм.

Входные данные.

<Число>, подлежащее обработке - number (целое).

Выходные данные.

<Сумма цифр> в числе-sum (целое).

<Количество цифр> в числе - kol (целое).

Алгоритм.

1. Ввести целое <Число>.

2. Вычислить <Сумму цифр> <Числа>.

3. Вычислить <Количество цифр> в <Числе>.

4. Вывести результат на печать.

Текст программы.

var

number: integer;

sum, kol: integer;

function summ(num : integer): integer;

{

функция вычисления суммы цифр числа num

num – проверяемое число

возвращаемое значение – сумма цифр в числе num

}

Var

s, // сумма цифр

temp // последняя цифра числа

: integer;

Begin

s:=0; // начальное значение суммы

while num<>0 do begin // пока число больше 0

temp:=number mod 10; // выделили последнюю цифру числа num

s:=s+temp; // добавили её к сумме

number:=number div 10 // уменьшили число на порядок

end;

summ:=s; // указали возвращаемое функцией sum значение

end;

function koll(num : integer): integer;

{

функция подсчета количества цифр в числе

num – проверяемое число

возвращаемое значение – количество цифр в числе num

}

Var

k : integer;

Begin

k:=0; // начальное значение количества цифр

while num<>0 do begin // пока число больше 0

k:=k+1; // увеличиваем количество цифр на 1

number:=number div 10 // уменьшаем число на порядок

end;

koll:=k;

end;

begin {головной модуль}

WriteLn(’Введите целое число’);

ReadLn(number);

sum:=summ(number); // нашли сумму цифр числа number

kol:=koll(number); // нашли количество цифр числа number

WriteLn (’сумма цифр = ’, sum, ’ всего цифр = ’, kol)

end.

Примечания: При вызове функций summ и koll значение фактического параметра number: integer присваивается формальному параметру num: integer, описанному в заголовках функций. Механизм параметров позволяет таким образом организовать многократное использование функций. Например, изменим условие задачи: Проверить, равны ли суммы цифр двух целых чисел? Тогда получим:

Var

number1, number2: integer;

sum1, sum2: integer;

begin {головной модуль}

WriteLn(’Введите первое число’);

ReadLn(number1);

sum1:=summ(number); // нашли сумму цифр числа number1

WriteLn(’Введите второе число’);

ReadLn(number2);

sum2:=summ(number2); // нашли сумму цифр числа number2

if sum1=sum2 then //суммы цифр первого и второго чисел равны

WriteLn (’сумма цифр чисел ’, number1 , ’ и ’, number 2, ’ равна’)

else// не равны

WriteLn (’сумма цифр чисел ’, number1 , ’ и ’, number 2, ’ не равна’)

end.

Задача № 2. Определить, является ли целое число совершенным.

Постановка задачи.

Исходя из определения понятия совершенного числа, будем использовать типовой алгоритм нахожденияделителей числа, который запишем в виде функции.

Входные данные.

<Число>, подлежащее обработке – number(целое).

Выходные данные.

<Сумма> делителей числа–sum (целое).

Алгоритм.

1. Ввести целое <Число>.

2. Найти <Сумму> делителей числа (функция delitel).

3. Если <Число> равно <Сумма> делителей, тогда вывести сообщение ’Число совершенное’, иначе – ’Число не совершенное’.

Текст программы.

Var

number, sum: integer;

function delitel (num : integer) : integer;

{

функция нахождения суммы делителей числа num

num – проверяемое число

возвращаемое значение – сумма делителей числа num

}

Var

s: integer;

del: integer;

Begin

s:=1; // единица всегда делитель

for del:= 2 to num div 2 do // для каждого числа из диапазона от 2 до половины числа num

if num mod del =0 then // del делит num без остатка, следовательно, это делитель

s:=s+del; // добавили делитель к сумме делителей

delitel:=s; // функция возвращает найденную сумму делителей числа num

end;

begin {головной модуль}

WriteLn(’Введите целое число’);

ReadLn(number);

sum:= delitel(number); // нашли сумму делителей числа number

if number=sum then // число и сумма его делителей равны

WriteLn (‘Заданное число является совершенным’)

else // не равны

WriteLn (‘Заданное число не является совершенным’)

end.

Задания для самостоятельного решения.

Для задач своего варианта лабораторной работы № 4 написать программы с использованием подпрограмм (процедуры или функции).

Контрольные вопросы:

1. Что такое функция?

2. Назовите особенности организации функций.

3. Что такое процедура?

4. Как осуществляется вызов функции?

5. Где указываются формальные параметры?

6. Где указываются фактические параметры?

7. Кем определяется количество и тип формальных параметров?

8. Возможно ли использование подпрограмм без параметров?

9. В чем состоят отличительные особенности организации процедур от функций?

10. Должно ли количество фактических параметров совпадать с количеством формальных параметры? Обоснуйте ответ.



Сейчас читают про: