ЛАБОРАТОРНАЯ РАБОТА 4
ПРОГРАММИРОВАНИЕ ЦИКЛОВ
С УСЛОВИЕМ
ЦЕЛЬ РАБОТЫ:
Овладеть навыками программирования на
языке Паскаль алгоритмов циклической
структуры с использованием операторов
цикла с предусловием и постусловием.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Для программирования циклов ПОКА в Паскале существуют оператор цикла с предусловием WHILE и оператор цикла с постусловием REPEAT.
ПРИМЕР 1: Алгоритм Евклида для подсчета НОД (наибольшего
общего делителя) двух натуральных чисел.
А Л Г О Р И Т М
алг Евклид
арг a,b: цел
рез z: цел
раб х,у: цел
Нач
ввод a,b
x:=a; y:=b
нцпока х у
если х > y
то х:=х-у
иначе у:=у-х
Все
кц
z:=x
вывод z
кон
П Р О Г Р А М М А
program Evklid;
var a,b,x,y,z: integer;
begin
writeln ('Введите числа');
readln (a,b);
x:=a; y:=b;
while (x< >y) do
if x > y
then x:=x-y
else y:=y-x;
z:=x;
writeln ('НОД=',z)
end.
ПРИМЕР 2: Вычислить сумму членов ряда
с точностью до члена ряда, меньшего Е.
А Л Г О Р И Т М
алг Сумма ряда
арг Е: вещ
рез S: вещ
раб Z: вещ, n: цел
Нач
ввод Е
n:=1; Z:=1/6; S:=0;
нцпока I Z I >= E
S:=S+Z;
n:=n+1;
кц
вывод S
Кон
П Р О Г Р А М М А
program Summa;
var n:integer;
S,Z,E: real;
begin
writeln ('ввести точность');
readln (E);
n:=1; Z:=1/6; S:=0;
While abs(z) >=E do
begin
S:=S+Z;
n:=n+1;
Z:=n/((n+1)*(n+2))
end;
writeln ('S=', S:10:2)
end.
ПОРЯДОК РАБОТЫ
1. Разработать алгоритм и программу примера 1 (табл.7).
Выполнить программу, проанализировать результаты.
2. Разработать алгоритм и программу для вычисления суммы с
заданной точностью (табл.8). Получить результат.
СОДЕРЖАНИЕ ОТЧЕТА
Отчет по лабораторной работе должен содержать условия, алгоритмы, тексты программ, исходные данные и результаты по двум примерам.
ТАБЛИЦА 7
НОМЕР ВАРИАНТА | УСЛОВИЕ | |
Для выражения ![]() | ||
Найти наибольшую степень двойки, не привы-шающую заданного числа n. | ||
Вычислить кубический корень из числа m методом Ньтона по формуле:
![]() ![]() | xn, e, m | |
Два параллельных зеркала А и В обращены друг к другу. При падении луча на зеркало А он ослабляется на Т [%], а при его падении на зеркало В – на Р [%]. Определить, после скольких отражений луч, попеременно отражаясь то от зеркала А,то от зеркала В, ослабеет более чем в 50 раз. Первоначально он попадает на зеркало А. | S – сила света | |
В водохранилище каждые сутки поступает Т [м3] воды, а расходуется R [м3] на орошение полей и испарение, к тому же ежесуточно теряется А (1-EXP(-V)) [м3] воды на просачивание в почву, где А – коэффициент, V – объем воды в водохранилище. Определить, за сколько дней объем воды в водохранилище уменьшится на Р [%] заданного первоначального объема V0. | ||
На железнодорожном пути находится N разрозненных вагонов. К ним движется вагон с кинетической энергией W, он сцепляется с ближайшим вагоном, затем вместе с ним движется дальше, сцепляясь с очередным вагоном, и т.д. При каждой сцепке расходуется 20% имеющейся кинетической энергии, еще Р [ Дж ] затрачивается на то, чтобы стронуть с места неподвижный вагон и, если энергия не истрачена полностью, движение продолжается. Определить, сколько вагонов окажутся сцепленными. | ||
Найти наибольшую степень 3, не привышающую заданного числа m. | ||
Вычислить значения функции
![]() | ||
Найти число в последовательности Фибоначчи большее (равное) заданному числу М и его порядковый номер. Члены ряда Фибоначчи вычисляются по формуле: F(1) = F(2) = 1 F(k) = F(k-1) + F(k-2), k > 2 | ||
Найти наименьшее общее кратное двух чисел. Числа вводятся. | ||
Извлечь корень степени m из числа х, воспользовавшись итерационной формулой:
![]() ![]() | ||
Для выражения ![]() |
Вычислить сумму членов ряда S с точностью E:
ТАБЛИЦА 8
НОМЕР ВАРИАНТА | УСЛОВИЕ |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() |
ЛАБОРАТОРНАЯ РАБОТА 5
РАБОТА С ВЕКТОРАМИ
ЦЕЛЬ РАБОТЫ:
1. Усвоить правила работы с переменными типа
массив языка программирования Паскаль.
2. Научиться составлять алгоритмы и программы
для обработки одномерных массивов.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Под массивом понимается упорядоченная совокупность конечного числа данных одного типа, об"единенных под общим именем. Имена массивов образуются так же, как и имена простых переменных. Одномерный массив называется вектором. Для описания массивов используется служебное слово array. Массив в Турбо-Паскале можно описывать двумя способами:
а) в разделе описания переменных VAR:
var
<имя переменной>: array [тип индекса] of <тип компоненты>;
б) определить сначала тип, а затем описать массив этим типом
type
<имя типа>: array [тип индекса] of <тип компоненты>;
var
<имя переменной>: <имя типа>;
где <тип индекса> - порядковый тип;
<тип компоненты> - любой тип.
ПРИМЕР 1: В векторе найти номера и значения первого мини-
мального и последнего максимального элементов.
А Л Г О Р И Т М
алг Первый минимум и последний максимум
арг n:цел; A:вещ таб [1..n]
рез n min, n max: цел;
a min, a max: вещ
раб i: цел
Нач
ввод n
нцдля i от 1 до n
ввод A[i]
кц
amin:=A[1]; nmin:=1;
amax:=A[1]; nmax:=1;
нцдля i от 2 до n
если A[i] < amin
то amin:=A[i]; nmin:=i
Все
если A[i] >= a max
то amax:=A[i]: nmax:=i
Все
кц
вывод nmin, amin, nmax, amax
Кон
П Р О Г Р А М М А
program min_and_max;
const n1=100;
var a: array [1.. n1] of real;
n,i,nmin, nmax: integer;
amin, amax: real;
begin
writeln ('n=');
readln (n);
writeln ('Вводите элементы вектора');
for i:=1 to n do
readln (a[i]);
amin:=a[1]; nmin:=1;
amax:=a[1]; nmax:=1;
for i:=1 to n do
begin
if a[i] < amin then
begin
amin:=a[i]; nmin:=i
end;
if a[i] >= amax then
begin
amax:=a[i]; nmax:=i
end
end;
writeln ('min=', amin:8:3,',nmin=', nmin:3);
writeln ('max=', amax:8:3,',nmax=', nmax:3);
end.
ПРИМЕР 2: Создать массив из N случайных целых чисел, равно-
мерно распределенных в диапазоне от 0 до 100.
Вычислить среднее арифметическое этих чисел.
А Л Г О Р И Т М
алг Среднее арифметическое
арг n:цел;
рез m: цел таб [1..n];
s: вещ
раб i: цел
Нач
ввод n
нц для i от 1 до n
m[i]:=random(101)
вывод m[i]
кц
s:=0;
нцдля i от 1 до n
s:=s+m[i]
кц
s:=s/n;
вывод s
Кон
П Р О Г Р А М М А
program SRED;
const
nmax=1000;
type
x=array [1.. nmax] of integer;
var
m:x;
i,n:integer;
s:real;
begin
writeln ('n='); readln(n);
{создание массива}
for i:=1 to n do
begin
m[i]:=random (101);
writeln (m[i])
end;
s:=0;
for i:=1 to n do
s:=s+m[i];
s:=s/n;
writeln ('s='s)
end.
ПОРЯДОК РАБОТЫ
1. Разработать алгоритм и программу примера 1 (табл.9).
Вектор вводить с клавиатуры.
2. Разработать алгоритм и программу примера 2 (табл.10).
Вектор сформировать из случайных целых чисел.
СОДЕРЖАНИЕ ОТЧЕТА
Отчет по лабораторной работе должен содержать условия, алгоритмы, тексты программ, исходные данные и результаты по двум примерам.
ТАБЛИЦА 9
НОМЕР ВАРИАНТА | УСЛОВИЕ |
Даны два вектора целых чисел А и В. Вычислить вектор С, который содержит нечетные элементы вектора А, которых нет в векторе В. | |
Расположить элементы вектора в обратном порядке. Дополнительный массив не использовать. | |
Найти среднее арифметическое элементов массива х(n), исключив из них максимальное и минимальное значение. | |
Вектор B(n) заменить вектором, у которого элементы образуются делением вектора В на их сумму. | |
Заменить все элементы вектора x(m), стоящие до максимального, нулями. | |
В массиве R(k) найти минимальный элемент среди положительных и максимальный среди отрицательных. | |
В массиве Z(n) заменить все его элементы, стоящие после минимального, нулями. | |
Даны массив A(n) целого типа и целое число х. Произвести перестановку элементов массива так, чтобы в начале массива стояли элементы, значения которых меньше х, затем элементы, равные х, а следом элементы, значения которых больше х. | |
На плоскости на расстоянии s [1], s [2],..., s [10] от центра кругового кольца с внутренним радиусом r и внешним R расположены точки. Определить количество точек, расположенных внутри кольца. | |
Дан вектор Х. Все его элементы не равные нулю, переписать (сохраняя их порядок) в начало массива, а нулевые элементы – в конец массива (новый массив не заводить). | |
Даны два вектора А и В. Сформировать вектор С, который содержит элементы, присутствующие в обоих массивах. | |
Имеется n окружностей с центром в начале координат и радиусами R [1], R [2],..., R [ n ]. Определить номера окружностей между которыми находится точка с координатами (х,у). | |
В векторе х(n) поменять местами максимальный и последний элементы. | |
В векторе Н(m) поменять местами максимальный и минимальный элементы. |
ТАБЛИЦА 10
НОМЕР ВАРИАНТА | УСЛОВИЕ |
Вычислить среднее геометрическое элементов вектора Т(k), кратных трем. | |
Определить кратна ли сумма элементов вектора A(x) семи. | |
В векторе D(m) определить количество четных элементов. | |
В векторе N(k) поменять местами первый и минимальный элементы. | |
Из вектора С(n) сформировать вектор А, содержащий четные элементы вектора С и вектор В, содержащий нечетные элементы. | |
Произвести сдвиг элементов вектора A (6) на k позиций влево так, что на место a [1] станет a [ k +1], на место a [ n -k] станет a [ n ], на место a [ n - k +1] станет a [1], на место a [ n - k +2] станет a [2]. При k = 3. | |
Найти среднее геометрическое элементов массива С [ k ], стоящих на четных местах. | |
В массиве x(n) поменять местами минимальный и последний элементы. | |
В векторе Т (k) заменить все его элементы, стоящие после максимального, нулями. | |
Элементы вектора В, удовлетворяющие условию B [ i ]>10, переписать в массив х, а элементы, удовлетворяющие условию B [ i ] <= 10, переписать в массив Y. | |
В векторе Z(m) определить сумму нечетных элементов. | |
Определить индексы четных элементов массива А(k). | |
Определить кратна ли сумма элементов вектора D (12) пяти. |