Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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




Program Example_17;

Var  n, i, Sg : integer;  

A : array [1..30] of word;

Function SumDigit(K: word): integer;

Var D, S : integer;

Begin

S := 0;

While K > 0 do begin

D := K mod 10;

S := S + D;

K := K div 10 end;

SumDigit := S

End;

Begin

 writeln;

write(‘Введите количество элементов массива  N = ‘);

read(n);

write(‘Введите ‘, n, ‘целых положительных чисел : ‘);

For i := 1 to n do 

read(A[i]);

writeln(‘Результат:‘);

For i := 1 to n do begin

Sg := SumDigit(A[i]);

writeln(‘Сумма цифр числа ‘, A[i], ‘ равна ’, Sg ) end;

readln

end.

 

Рисунок 8.1 – Блок-схемы алгоритма основной программы и функции для примера 8.1

Данные для тестирования

1) Для n = 3, A = {123, 4135, 47356}

ð Результат:

Сумма цифр числа 123 равна 1+2+3= 6

Сумма цифр числа 4135 равна 4+1+3+5= 13

Сумма цифр числа 47356 равна 4+7+3+5+6= 25

2) Для n = 4, A = {5753, 14, 5, 73}

ð Результат:

Сумма цифр числа 5753 равна 5+7+5+3= 20

Сумма цифр числа 14 равна 1+4= 5

Сумма цифр числа 5 равна 5

Сумма цифр числа 73 равна 7+3= 10

Пример 8.2. Описать процедуру Massiv(Х, K, X_cр, Т), находящую среднее арифметическое элементов массива {Х}, состоящего из K целых чисел, и возвращающую Т=True, если элементы массива упорядочены по неубыванию, и T=False в противном случае. Используя эту процедуру, вычислить среднее арифметическое и проверить упорядоченность элементов по неубыванию для двух целочисленных массивов {A} размером N и {B} размером М.

Решение задачи

Выберем схему решения поставленной задачи.

В процедуре Massiv(Х, K, X_cр, Т) введём переменную S для накопления суммы элементов массива (начальное значение S=0). Вычисление суммы осуществляется с помощью оператора цикла с параметром (for) – на каждом шаге к переменной S добавляется очередной элемент массива. Среднее арифметическое элементов массива будет вычисляться: S / K.

Для определения упорядоченности элементов массива по неубыванию в процедуре введём переменную Т с начальным значением Т=True (предположим, массив упорядочен по неубыванию, т.е. x1≤x2≤x3≤ .. ≤xk). С помощью оператора цикла с параметром (for) для каждой пары элементов будем проверять нарушение условия упорядоченности, т.е.  xi > xi+1. При выполнении такого условия переменной Т присваивается значение False.

В основной программе после того как будут введены все элементы массивов {А} и {В}, с помощью обращения к процедуре Massiv, вначале для массива {А}, а затем для массива {В} вычисляем нужные значения.

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

Блок-схемы алгоритмов основной программы и процедуры Massiv(Х,K,X_cр,Т) – представлены на рисунке 8.2

Рисунок 8.2 – Блок-схемы алгоритма основной программы и функции для примера 8.2

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

Program Example_18;

type mas = array [1..30] of integer

Var  n, m, i : integer; A_cp, B_cp : real; T_a, T_b : boolean;

A, B : mas;

procedure Massiv(X: mas; K: integer; var X_cp: real; var T: boolean);

Var j, S : integer;

Begin

S := 0;

For j := 1 to K do

S := S + D;

X_cp := S / K;

T := True;

For j := 1 to K-1 do

If X[j] > X[j+1] then T := False;

End;

Begin

 writeln;

write(‘Введите количество элементов массива A   N = ‘);

read(n);

write(‘Введите ‘, n, ‘целых чисел – элементы массива А : ‘);

For i := 1 to n do 

read(A[i]);

write(‘Введите количество элементов массива В   M = ‘);

read(m);

write(‘Введите ‘, m, ‘целых чисел – элементы массива B : ‘);

For i := 1 to n do 

read(B[i]);

writeln(‘Результат:‘);

Massiv(A, N, A_cp, T_a);

writeln(‘Среднее арифметическое элементов массива A равно ’, А_ср:5:2);

if T_a then writeln(‘Массив A упорядочен по неубыванию’)

else writeln(‘Массив A не упорядочен по неубыванию’);

Massiv(B, M, B_cp, T_b);

writeln(‘Среднее арифметическое элементов массива В равно ’, В_ср:5:2);

if T_b then writeln(‘Массив B упорядочен по неубыванию’)

else writeln(‘Массив B не упорядочен по неубыванию’);

readln

end.

Данные для тестирования

1) Для n = 8, A = {1, 2, 3, 4, 5, 6, 7, 8}

Для m = 5, B = {7, 2, 1, 4, 5}

ð Результат:

Среднее арифметическое элементов массива A равно 4.50

Массив A упорядочен по неубыванию

Среднее арифметическое элементов массива B равно 3.80

Массив B не упорядочен по неубыванию

Пример 8.3. Для заданных действительного А и целого М вычислить значение выражения

Возведение некоторого числа X в степень N организовать с помощью функции Stepen(Х, N).

Решение задачи

Выберем схему решения поставленной задачи.

Чтобы получить XN, нужно вычислить произведение .

В функции Stepen(Х, N) введём переменную P для накопления произведения N сомножителей (начальное значение Р=1). Вычисление произведения осуществляется с помощью оператора цикла с параметром (for) – на каждом шаге переменная Р домножается на Х. Если N – отрицательное, то зададим Х = 1 / Х.

Последний выполнимый оператор в функции Stepen – присвоение результата имени функции, т.е. Stepen := Р.

В основной программе после того как будут введены значения А и M, с помощью обращения к функции Stepen с соответствующими аргументами, вычисляем значение выражения для Z.

Блок-схемы алгоритмов основной программы и функции Stepen(Х, N)










Последнее изменение этой страницы: 2018-04-12; просмотров: 477.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...