Организация циклов с неизвестным числом повторений

Организация циклов с неизвестным числом повторений thumbnail

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

В циклах с неизвестным числом повторений вычислительный процесс завершается при выполнении некоторого дополнительного условия. Значения параметра цикла уже не задаётся в виде диапазона, а только указывается его начальное значение и шаг изменения. Тем не менее, организация цикла выполняется по стандартной методике, указанной в п. 4.1. Отличие заключается в том, что не любой тип циклического вычислительного процесса можно использовать. Тип цикла определяется в соответствии с заданным дополнительным условием завершения вычислений. Это однозначно исключает возможность использование цикла «Для» на основе блока модификации. Для определения количества шагов повторения цикла необходимо организовать счетчик.

Пример 4.3. Составить блок-схему алгоритма, вычисляющего значения функции у = ln(1 + 0.2∙x), при различных значениях параметра х, изменяющегося от xn ≤ 3 с шагом hx = -2. При этом вычислять у до тех пор, пока выражение под знаком логарифма остается больше 0. Определить количество (k) вычисленных значений y.

Перед решением задачи необходимо определить тип цикла, который будет использоваться. Вычисляемое выражение содержит «аномалию» (значение под знаком логарифма должно быть больше 0), которая в тоже время является условием завершения вычислений. Другими словами, необходимо вначале проверить возможность вычисления значения у, а только затем вычислять его. Поэтому в данном случае для организации вычислительного процесса можно использовать только цикл с предусловием (рис. 4.3).

В качестве исходных данных вводятся значения переменных хn, hx (блок 2). В блоке 3 задаются начальные значения для параметра цикла x и счетчика количества повторений цикла k. После этого, в блоке 4 одновременно проверяются условие продолжения цикла и возможная «аномалия» (выражение под знаком логарифма должно быть больше 0). В теле цикла для текущего значения х вычисляется и выводится соответствующее значение у (блоки 5-6), а также увеличивается значение счетчика вычисленных у (блок 7). В конце тела цикла выполняется переход к следующему значению параметра цикла х (блок 8). Цикл работает до тех пор, пока под знаком логарифма не появится выражение ≤ 0. После выхода из цикла в блоке 9 выводится переменная k – количество вычисленных значений у.

Результаты пошагового выполнения цикла в алгоритме, приведенном на рис. 4.3, представлены в таблице 4.3.

Таблица 4.3. Пошаговое выполнение цикла

№ шагаТекущее значение х (в начале цикла)Результат проверки условия продолжения цикла (1+0.2∙x>0)Вычисл. значение уТекущие значения kНовое значение х (в конце цикла)
3 (xn)Истина (1+0.2∙3=1.6 >0)0.47k=1
Истина (1+0.2∙1=1.2 >0)0.18k=2-1
-1Истина (1+0.2∙-1=0.8 >0)-0.22k=3-3
-3Истина (1+0.2∙-3=0.4 >0)-0.92k=4-5
-5Ложь (1+0.2∙-5=0 >0)

Вложенные циклы

Решение некоторых задач требует выполнения перебора значений не одной, а нескольких величин одновременно. В этом случае речь идет о применении вложенных циклов, каждый из которых организовывается по стандартному принципу (может быть любого из трех типов) и осуществляет перебор только одного параметра. При этом первый цикл называется внешним, а вложенные в него – внутренними. Причем один и тот же цикл может быть внешним по отношению к одному и внутренним по отношению к другому циклу. Границы внутреннего цикла не могут выходить за границы внешнего по отношению к нему цикла.

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

Организация циклов с неизвестным числом повторений

Пример 4.4. Составить блок-схему алгоритма, вычисляющего значения функции у = a – 2∙b, для всех возможных комбинаций значений параметров a и b, принадлежащих интервалам 0 ≤ a ≤2, ha =1 и -2 ≤ b ≤ 2, hb =2, соответственно. Определить среднее арифметическое (S) вычисленных значений y.

Для решения поставленной задачи необходимо организовать два вложенных цикла по перебору параметров a и b. При этом каждый цикл является циклом с известным числом повторений, т. к. заранее можно вычислить количество значений a из заданного интервала (Na = ](2 – 0)/1[ + 1 = 3) и количество значений b из заданного интервала (Nb = ](2 – (-2))/2[ + 1 = 3), а следовательно и общее количество вычисленных значений y (N = Na × Nb). Значит, для организации циклов можно использовать любой из трех стандартных типов.

Кроме этого y одновременно зависит от двух параметров a и b, поэтому не имеет принципиального значения по какому параметру делать внешний цикл, а по какому – внутренний (внешним может быть цикл по параметру a, а внутренним – по параметру b, и наоборот). В случае же если одна из вычисляемых величин зависит только от одного параметра, то цикл по этому параметру рационально сделать внешним и вычислять величины, зависящие только от этого параметра во внешнем цикле. Такая организация позволит избежать многократного вычисления одних и тех же значений во внутреннем цикле.

На рисунке 4.4 представлена блок-схема алгоритма, в которой для решения поставленной задачи, используется два вложенных цикла: внешний цикл с предусловием по параметру a и внутренний цикл с постусловием по параметру b.

Работа алгоритма начинается с ввода исходных данных (блок 2), которые представляют собой начальные, конечные значения и шаг изменения параметров a и b из заданных интервалов. На этапе подготовки к выполнению внешнего цикла (блок 3) параметру цикла a присваивается начальное значение an, а также обнуляются переменные S и k, используемые для хранения суммы и количества вычисленных значений y.

Тело внешнего цикла с предусловием включает блоки 4-11. Если текущее значение a не выходит за правую границу интервала (блок 4), то происходит выполнение тела внешнего цикла, которое включает в себя внутренний цикл. В блоке 5 происходит подготовка к выполнению внутреннего цикла, его параметру b присваивается начальное значение bn.

Тело внутреннего цикла с постусловием включает блоки 6-10. В блоке 6 вычисляется текущее значение y, а в блоке 7 происходит вывод вычисленного y и соответствующих ему значений a и b. В блоке 8 полученное значение у добавляется к сумме S и увеличивается значение счетчика вычисленных у. Затем происходит изменение параметра внутреннего цикла b на значение шага hb (блок 9) и выполняется проверка условия выхода из внутреннего цикла (блок 10).

Если текущее значение b не превышает конечного bk, то происходит возврат на начало внутреннего цикла и повторяется вычисление y при новом значении b. В тоже время значение параметра внешнего цикла a остается неизменным. Таким образом, при одном значении параметра внешнего цикла происходит перебор всех значений параметра внутреннего цикла.

Читайте также:  Витамины для женщин нормализующие цикл

После выхода из внутреннего цикла в блоке 11 происходит изменение параметра внешнего цикла a на значение шага ha. Затем выполняется переход на начало цикла (блок 4) и повторяются описанные выше действия, пока не завершит работу внешний цикл. После выхода из внешнего цикла в блоках 12-13 вычисляется и выводится S – среднее арифметическое вычисленных значений y.

Результаты пошагового выполнения циклов в алгоритме, приведенном на рис. 4.4, представлены в таблице 4.4.

Таблица 4.4. Пошаговое выполнение алгоритма с вложенными циклами

№ шагаТекущее знач. a (в начале цикла)Проверка условия продолжения внешнего цикла (a ≤ ak)Текущее знач. b (в начале цикла)Вычисл. значение уТекущие значения k, SНовое знач. b (в конце цикла)Проверка условия выхода из внутреннего цикла (b > bk)Новое знач. a (в конце цикла)
0 (an)Истина-2 (bn)k=1, S=4Ложь
k=2, S=4Ложь
2 (bk)-4k=3, S=0Истина
Истина-2 (bn)k=4, S=5Ложь
k=5, S=6Ложь
2(bk)-3k=6, S=3Истина
2 (ak)Истина-2 (bn)k=7, S=9Ложь
k=8,S=11Ложь
2(bk)-2k=9, S=9Истина
Ложь

Следует также обратить внимание на то, что начальное значение параметра внутреннего цикла b необходимо задавать каждый раз перед началом выполнения вложенного цикла (блок 5), т.е. внутри внешнего цикла. Если это будет сделано одновременно с заданием начального значения для параметра внешнего цикла a (блок 3), то внутренний цикл выполнится только при начальном значении a. На этом алгоритм завершит свою работу и, следовательно, не будут перебраны все возможные комбинации значений a и b.

Источник

Мы поможем в написании ваших работ!

Мы поможем в написании ваших работ!

Мы поможем в написании ваших работ!

ЗНАЕТЕ ЛИ ВЫ?

Для организации циклов с заранее неизвестным числом повторений (а также и для организации циклов с известным числом повторений) используют оператор цикла с предусловием (оператор while) и оператор цикла с постусловием (оператор repeat). Вид оператора цикла с предусловием:

While b do s;

Здесь b – логическое выражение, s – тело цикла. При выполнении оператора сначала проверяется логическое выражение, а затем выполняется тело цикла, т.е. операторы циклической части. Цикл повторяется, пока логическое выражение истинно. Когда оно становится ложным, происходит выход из цикла. Если с самого начала логическое выражение ложно, тело цикла не выполнится ни разу. Если тело цикла является составным оператором, т. е. состоит из нескольких операторов, его необходимо ограничить операторными скобками begin и end.

Вид оператора цикла с постусловием:

repeat s until b;

Здесь s – тело цикла, b – логическое выражение. При выполнении оператора сначала выполняется тело цикла, а затем проверяется логическое выражение. Цикл повторяется, пока логическое выражение ложно. Когда оно становится истинным, происходит выход из цикла. Таким образом, если даже логическое условие изначально истинно, обеспечивается, по крайней мере, одно выполнение тела цикла.

Операторы While и Repeat позволяют организовывать итерационные циклы, в которых происходит последовательное приближение к искомому значению с заданной точностью. Условием выхода из цикла является достижение заданной точности.

Пример 1. Найти k, при котором значение суммы s=3+6+9+…+3k становится больше t при вводе t с клавиатуры.

Решение. Каждое слагаемое равно произведению числа 3 напорядковый номер этого слагаемого. Поэтому можно организовать цикл, в котором s находится путем прибавления предыдущего значения s к порядковому номеру слагаемого, умноженному на 3. В цикле также должен увеличиваться на единицу порядковый номер слагаемого. Перед циклом следует обнулить начальное значение s и задать начальное значение k. Выход из цикла происходит, когда s станет больше t. Поскольку количество повторений заранее неизвестно, можно использовать для организации цикла операторы While или Repeat, но нельзя использовать оператор For.

Существуют значения t (например, при t = -5), при которых цикл не должен быть выполнен ни разу. В этом случае для организации цикла надо использовать оператор while. Если производится суммирование, обязательно присвоить начальное значение s=0. Следует учесть, что сначала происходит увеличение k, а затем расчет s. Поэтому первоначальное значение k=0. Ниже приведён текст программы.

Uses Crt; {подключение модуля crt}

Var {описание переменных}

s,k:integer;

t:real;

Begin

Clrscr; {очистка экрана}

Write(‘t= ‘);

Readln(t); {ввод значения t}

s:=0; k:=0; {начальные значения s и k}

While s<=t do {начало цикла/проверка условия}

begin

k:=k+1; {увеличение k в цикле}

s:=s+3*k; {расчет s}

end; {окончание цикла}

Writeln(‘k= ‘,k); {вывод на экран найденного значения k}

Readln;

End.

Пример 2.Вывести на экран в два столбца угловые значения земных параллелей от экватора до Северного полюса через каждые 10о и соответствующие им длины параллелей, считая Землю идеальным шаром с радиусом 6370 км.

Решение. Длину земной параллели можно найти по формуле D=2prp=2przcos(a), где rp – радиус параллели, rz – радиус Земли, a – угловая величина параллели (см. рис). Длину следует рассчитывать и выводить на экран 10 раз по одной и той же формуле, изменяя только угол a (0о, 10о,…,90о). Поэтому организуем цикл, в котором рассчитывается длина параллели и выводятся на экран значения угла и длины параллели. В цикле также необходимо увеличивать значение угла a на 10о. Перед циклом следует задать начальное значение a, равное 0.

Поскольку в Паскале тригонометрические функции рассчитываются от углов, выраженных в радианах, то угловую величину параллели следует переводить из градусов в радианы по выражению a×p/180.

Число повторений в цикле известно (равно 10), поэтому для организации цикла можно использовать операторы for, while или repeat.

Текст программы при использовании оператора repeat:

uses crt;

var

rz,alfa:integer;

dlina:real;

Begin

clrscr; {очистка экрана}

rz:=6370; {значение радиуса Земли}

alfa:=0; {начальное значение широты (Экватор)}

repeat {начало цикла}

dlina:=rz*cos(alfa*pi/180)*2*pi; {расчет длины параллели}

Writeln(alfa:3,’ ‘,dlina:7:1); {вывод на экран}

alfa:=alfa+10; {увеличение широты}

until alfa>90; {конец цикла/проверка условия}

Readln;

End. {конец программы}

Задания

При выполнении заданий в учебных целях следует организовывать циклы в задании 1 при помощи оператора while, в задании 2 – при помощи оператора repeat.

Вариант 1

Задание 1. Найти t, при котором значение выражения (2+4+6+…+2t)/(1×2×3×…×t) становится меньше 0,06.

Задание 2. Из пункта А в пункт В, расстояние между которыми 500 км, равномерно и прямолинейно движется автомобиль со скоростью v. При вводе v с клавиатуры вывести на экран в одну строку через один пробел расстояния от автомобиля до пункта В через каждые два часа от начала движения до момента прибытия в пункт В.

Вариант 2

Задание 1. Найти x, при котором значение выражения (0,5×1×1,5×2×…×0,5x)/x2 становится больше s при вводе s с клавиатуры.

Задание 2. Из пункта А в пункт В, расстояние между которыми s км, равномерно и прямолинейно движется материальная точка со скоростью v. При вводе v и s с клавиатуры вывести на экран в один столбец расстояния от материальной точки до пункта А через каждый час от начала движения до момента прибытия в пункт В.

Вариант 3

Задание 1. Найти f, при котором значение выражения (f3+ln f)/(f2-11f+2,3) становится больше s при вводе s с клавиатуры, если f увеличивается в ряду 1,2,3,4, … .

Задание 2. Материальная точка равноускоренно и прямолинейно движется с начальной нулевой скоростью и ускорением a км/мин2. Скорость точки описывается уравнением v=at, где t – время. При вводе a с клавиатуры вывести на экран в один столбец значения скорости точки через каждую минуту от начала движения до момента достижения скорости 20 км/мин.

Вариант 4

Задание 1. Найти значение выражения 1+3+5+7+…+(2z-1) при вводе z с клавиатуры.

Задание 2. Камень падает с высоты 200 м. Без учета сопротивления воздуха длина пути, пройденного камнем, описывается уравнением s=gt2/2, где g – ускорение свободного падения, t – время. Вывести на экран в один столбец расстояния от камня до земли через каждую секунду от начала падения до момента соприкосновения с землей.

Вариант 5

Задание 1. Найти значение выражения 1/1+1/2+1/3+1/4+…+1/n при вводе n с клавиатуры.

Задание 2. Скорость некоторой химической реакции при 0°С равна 0,002 моль/л×мин и увеличивается в два раза при увеличении температуры на каждые 10°С (температурный коэффициент реакции равен 2). Вывести на экран в два столбца значения температуры, начиная от 0°С, с шагом 10°С, и соответствующие им значения скорости реакции до достижения скорости более 0,2 моль/л×мин.

Вариант 6

Задание 1. Найти значение выражения (1+2+3+4+…+n)/(2×4×6×…×2n) при вводе n с клавиатуры.

Задание 2. Вывести на экран в одну строку через один пробел все високосные годы в период с 2000 до 2050, при условии, что 2000-й год – високосный.

Вариант 7

Задание 1. Найти j, при котором значение выражения (lg j+134j)/(j2-ln j+3) становится меньше e при вводе e с клавиатуры, если j увеличивается в ряду 1,2,3,4, … .

Задание 2. Вывести на экран в три столбца массовые концентрации серной кислоты в растворе при возрастании от 10 г/л до 300 г/л с шагом 10 г/л, а также соответствующие им молярные концентрации (моль/л) и нормальные концентрации (г-экв/л).

Вариант 8

Задание 1. Найти x, при котором значение выражения 100+99+98+97+…+x становится меньше r. Значение r ввести с клавиатуры (r<100).

Задание 2. Вывести на экран в четыре столбца значения длин в метрах в диапазоне от 1 до 20 м с шагом 1 м, а также соответствующие им значения длин в дюймах (в одном дюйме 2,54 см), футах (в одном футе 0,3048 м) и ярдах (в одном ярде 0,9144 м).

Вариант 9

Задание 1. Найти значение выражения 1+4+9+16+…+x2 при вводе x с клавиатуры (x – целое число).

Задание 2. Вывести на экран в четыре столбца значения объема в литрах при убывании от 40 до 2 л с шагом 2 л, а также соответствующие им значения объема в галлонах (в одном галлоне 4,546 л), квартах (в одной кварте 1,138 л) и пинтах (в одной пинте 0,569 л).

Вариант 10

Задание 1. Найти сумму квадратных корней первых ста натуральных чисел.

Задание 2. Растворимость сернистого газа в воде описывается уравнением x=0,3p×1,0363-t, где x- растворимость, г/л, p – парциальное давление сернистого газа, мм.рт.ст., t – температура, °С. Вывести на экран в два столбца значения температуры в диапазоне от 0 до 50°С с шагом 5°С и соответствующие им значения растворимости сернистого газа при вводе p с клавиатуры.

Тема 9

Итерационные алгоритмы циклической структуры

Итерационные алгоритмы нашли широкое применение в инженерно-технических расчётах. В этих расчётах производится многократные последовательные вычисления с целью постепенного приближения к искомому результату, причем для вычислений на каждом шаге используются результаты вычислений на предыдущем шаге. Завершение вычислений производится при достижении заданной точности вычислений. Поскольку количество итераций (повторений вычислений) заранее неизвестно, то при организации вычислений необходимо использовать циклы While или Repeat.

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

Одной из наиболее часто используемых областей использования итерационных алгоритмов является вычисление значений тригонометрических и трансцендентных функций, таких, как синус, косинус, натуральный логарифм, экспонента и др. При этом, задаваясь требуемой точностью вычислений, можно заменить точное значение функции, например, sin x, её приближённым значением, полученным в результате сохранения конечного числа членов разложения этой функции в ряд Тейлора:

Точность конечного результата зависит от количества сохранённых членов ряда. Если задана погрешность e (и, например, равна 10-4). Номер последнего слагаемого n определяется условием

Упражнение. Вычислить на ЭВМ значение суммы членов бесконечного ряда точностью до члена ряда, меньшего e = 10-4 для x, равного 0,1. Определить число членов ряда, вошедших в сумму.

Ключевым этапом решения задачи является вычисление каждого члена ряда . Его значение можно вычислять напрямую, однако, удобнее выразить n-й член через (n-1)-й, в данном случае получаем:

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

Блок-схема алгоритма решения представлена на рис. 7.1. В блоке 2 организуется ввод исходных данных. В блоке 3 производится подготовка цикла, для этого задаётся значение первого члена ряда, начальное значение суммы, равное этому члену, и номер члена ряда, равный 1 (просуммирован один член). Блоки 4 и 5 выполняют расчет текущего номера члена ряда и значения этого члена с использованием рекуррентного соотношения. Блок 6 реализует функцию накопления суммы. Блок 7 выполняет проверку условия окончания цикла. В блоке 8 организуется вывод результатов расчётов.

Программа, реализованная в соответствии со схемой алгоритма, имеет вид: Program Rows1; Uses Crt; Var x,eps,a,s:real; n:integer; begin ClrScr; Write(‘введите x ‘); Readln(x); Write(‘введите eps ‘); Readln(eps); a:=x; s:=0; n:=1; While abs(a)>=eps do begin s:=s+a; n:=n+1; a:=-a*x*x/((2*n-2)*(2*n-1)) end; Writeln(‘Сумма ряда = ‘,s:8:4); Writeln(‘Число членов ряда = ‘, n:4) End.
Рис.7.1. Блок-схема алгоритма

Задание

Вычислить на ЭВМ значение суммы членов бесконечного ряда с заданной точностью e. На печать вывести значение суммы и число членов ряда, вошедших в сумму.

ВариантСумма членов рядаЗначение xТочность вычисления e
0,2010-5
0,100,5·10-4
0,1510-3
0,1210-4
0,7010-4
10-4
1,50,5·10-3
p/60,5·10-4
1,710-3
0,5·10-4

Тема 10

Работа с массивами

По определению, принятому в языке Pascal, массив – это сложный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. С точки зрения программиста массив – это группа однотипных переменных с одним именем, каждый элемент массива имеет свой номер (индекс). Массив описывается одним из следующих способов:

1) Var

identificator : array [ index-type ] of element-type;

2) Type

TypeName= array [ index-type ] of element-type;

Var

identificator : TypeName;

Тип элементов может быть любым, но индекс должен быть перечислимого типа. Примеры описаний типа массив:

IntList:array[1..100] of Integer;

CharData:array[‘A’..’Z’] of Byte;

Matrix:array[0..9, 0..9] of Real;

Если в описании массива задан один индекс, массив называется одномерным, если два индекса – двухмерным, если n индексов – n-мерным. Одномерные массивы обычно используются для представления векторов, а двумерные – для представления матриц.

После объявления массива к каждому его элементу можно обратиться, указав идентификатор (имя) массива и индекс (номер) элемента в квадратных скобках. Например, запись IntList[2] позволяет обратиться ко второму элементу массива IntList, а запись Matrix[4,5] делает доступным для использования значение элемента, находящегося в четвёртом столбце пятой строки массива Matrix.

Перед использованием массива рекомендуется его очистить путём присваивания каждому элементу массива значения нуль:

for i:=1 to n do a[i]:=0;

Заполнение массива, то есть присваивание элементам массива значений может производиться путём ввода данных с клавиатуры, генерации случайных чисел, или присваивания результатов вычисления выражений.

Пример 1. Ввод с клавиатуры 10 элементов массива.

for i:=1 to 10 do

begin

Write(i,’-й элемент массива = ‘);

Readln(a[i]);

end;

Пример 2. Генерация массива действительных случайных чисел в диапазоне от X до Y:

for i:=1 to n do a[i]:=x+(y-x)*random;

(перед использованием функции random следует выполнить ее инициализацию функцией randomize)

Пример 3. Вывод массива из 10 элементов действительного типа

Writeln(‘Вывод элементов массива в строку:’);

for i:=1 to 10 do

Write(a[i]:7:2);

Writeln(‘Вывод элементов массива в столбец:’);

for i:=1 to 10 do

Writeln(i,’-й элемент массива = ‘,a[i]:7:2);

Пример 4. Вычисление суммы 10 элементов массива

s:=0;

for i:=1 to 10 do

s:=s+a[i];

Writeln(‘Сумма равна ‘, s:8:2);

Пример 5. Нахождение минимального и максимального элементов массива

mina:=a[1]; maxa:=a[1];

for i:=2 to 10 do

begin

if a[i]<mina then mina:=a[i];

if a[i]>maxa then maxa:=a[i];

end;

Writeln(‘Минимальное значение равно ‘, mina:8:2);

Writeln(‘Максимальное значение равно ‘, maxa:8:2);

Пример 6. Поиск в массиве элементов, удовлетворяющих определённым условиям. Например, чтобы подсчитать, сколько элементов массива имеют нулевые значения, надо записать:

k:=0;

for i:=1 to n do

if a[i]=0 then k:=k+1;

Writeln(‘В массиве А ‘, k, ‘ элементов равны 0’);

Упражнение. Наберите текст следующей программы:

Uses Crt;

Var

a:array[1..10] of byte;

b,i,p:byte;

Begin

ClrScr;

Writeln(‘Заполнение массива из 10 элементов целыми числами’);

for i:=1 to 10 do

a[i]:=random(255);

Writeln(‘Вывод массива в строку:’);

for i:=1 to 10 do

Write(a[i]:7:2);

Writeln;

repeat {сортировка массива}

p:=0;

for i:=1 to 9 do

if a[i]>a[i+1] then

begin

b:=a[i]; a[i]:=a[i+1];

a[i+1]:=b; p:=1;

end;

until p=0;

Writeln;

Writeln(‘Вывод массива после сортировки:’);

for i:=1 to 10 do

Writeln(i,’-й элемент массива = ‘,a[i]);

Readln;

End.

В этой программе организован ввод элементов массива, вывод исходного массива, его сортировка и вывод результатов сортировки. Сортировка выполняется методом “пузырька”, при котором сравниваются значения соседних элементов массива, и если необходимо, производится их перестановка. С помощью комбинаций клавиш Ctrl-F7 введите в окно просмотра переменных имя массива а. Затем таким же образом i, a[i], p (окно просмотра открывается и закрывается клавишей F5).

Выполните пошаговое прохождение программы. Для выполнения каждой строчки программы следует нажимать клавишу F7. При этом строка, которая будет выполняться следующим шагом, выделяется другим цветом. При прохождении внимательно следите за значениями переменных в окне Watch. При вводе переменных числа, имеющие размер более 255, будут восприняты неправильно, так как они выходят из диапазона чисел типа Byte (0..255).

Задание

При выполнении заданий следует использовать пример из этой лабораторной работы. Файл сохранить в свою папку под новым именем. Результаты расчетов вывести на экран.

Вариант 1

а) Организовать сортировку массива по возрастанию.

б) Определить сумму отрицательных элементов массива.

Вариант 2

а) Организовать сортировку таким образом, чтобы значение 4-го элемента никогда не изменялось.

б) Определить сумму элементов массива с четными номерами.

Вариант 3

а) Определить максимальный элемент массива и его номер.

б) Организовать обработку (ввод и вывод) строковых элементов, например, фамилий студентов группы.

Вариант 4

а) Организовать ввод и сортировку дробных чисел и подсчет их суммы.

б) Организовать сортировку букв в строковом массиве.

Вариант 5

а) Определить среднее арифметическое из отрицательных чисел массива.

б) Увеличить все элементы массива на 25.

Вариант 6

а) Заполнить массив так, чтобы его элементы содержали арифметическую прогрессию (8, 10, 12, 14 …).

б) Определить сумму отрицательных элементов массива.

Вариант 7

а) Модифицировать программу так, чтобы элементы массива со значением больше 100 стали равны 100.

б) Найти наименьший из положительных элементов массива.

Вариант 8

а) Модифицировать программу так, чтобы элементы массива меньше 10 стали равны 0.

б) Вычислить среднее арифметическое из положительных элементов массива.

Вариант 9

а) Заполнить массив так, чтобы его элементы содержали геометрическую прогрессию (1, 2, 4, 8…)

б) Определить сумму четных и сумму нечетных элементов массива.

Вариант 10

а) Найти произведение всех элементов массива не равных нулю

б) Вычислить отклонения элементов от среднего арифметического и заполнить ими второй массив.

Тема 11

Читайте также:  Цикл путь демона дорога в маги

Источник