Разработка в среде Turbo Pascal программы упорядочивания массива по возрастанию

 

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

среднеарифметический программа язык

Разработка в среде программы для упорядочивания массива по возрастанию. Задан массив A1, A2,…,A20. найти номер элемента массива, наиболее близкого к среднему арифметическому значению элементов массива, считая, что такой элемент один. Сжать массив, исключив из него элемент с найденным номером. Полученный массив упорядочить по возрастанию методом обмена и вывести на печать. Для отладки программы исходный массив сформировать с помощью генератора случайных чисел.


Блок-схема


2.Описание алгоритма решения задачи графическим способом


Укрупнённая схема алгоритма

Детализация укрупненной схемы алгоритма

В программе решаются следующие подзадачи:

.Формирование массива.

.Поиск среднеарифметического значения элементов массива.

.Сжатие массива, удаление из него элемента наиболее близкого к среднеарифметическому.

.Сортировка массива по возрастанию, методом обмена

.Вывод отсортированного массива.

Формирование массива.

Как говаривалось в условиях задачи, ввод элементов массива будем осуществлять с помощью генератора случайных чисел. Мы берём интервал можно брать любой. Поэтому выберем интервал от 0 до 40, используя формулу Random(b-a+1)+a, получим Random(40). Таким образом, каждый очередной элемент массива будет представлять собой целое число из диапазона [0, 40] и выводится на экран.Цикл работает до достижения переменной i значения 20, то есть до конца массива.


Блок-схема


3.Поиск среднеарифметического значения элементов массива


Нам необходимо найти среднеквадратичное значение, Определение, среднее арифметическое нескольких величин - это отношение суммы величин к их количеству.

Для определения этого значения вводим новую переменную s приравнивая её к нулю. Запускаем цикл с параметром равным количеству элементов и внутри цикла значение элемента прибавляем к буферной переменной. После чего переменную хранящую сумму всех элементов делим на количество проссумированных элементов .


Блок-схема


Сжатие массива, удаление из него элемента наиболее близкого к среднеарифметическому.

Для выполнения этого задания вводим три буферных переменных: sredn_c - хранит наименьшую разности между элементом и среднеарифметическим значением , sredn_n - хранит индекс элемента сохранённого в (sredn_c).

Алгоритм решения этой задачи будет таким: переменной (sredn_c) присваиваем значения разности по модулю первого элемента с среднеарифметическим значением, далее запускаем цикл пролистывающий все элементы массива, внутри цикла сравниваем sredn ( хранит в себе значение разности по модулю текущего элемента с среднеарифметическим ) и sredn_c больше то присваиваем ей значение sredn и запоминаем индекс этого элемента в переменю sredn_n. После окончания цикла известен индекс элемента, который ближе всего к среднеарифметическому.

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


Блок-схема


4.Сортировка массива по возрастанию, методом обмена


Для сортировки (упорядочивания) массива используем алгоритм сортировки обменом. При сортировке элементы массива меняются местами таким образом, что из значения оказываются упорядоченными.

Ниже приведена блок-схема, которая демонстрирует данную сортировку обменом.


Блок-схема


5.Вывод отсортированного массива


После сортировки выводим преобразованный массив. Вывод элементов одномерного массива осуществляется также при помощи цикла с параметром.


Блок-схема алгоритма


Блок-схема


Блок-схема



6.Разработка программы на языке PASCAL


Программа начинается со служебного слова Program, после которого следует заголовок программы. В данном случае это Valiev.

Далее включаем раздел Uses для использования модуля CRT, который применяется для управления работой экрана в текстовом режиме.

В данной программе в разделе констант (const) объявим константу N=20, где N - количество элементов массива.

После названия программы и идентификации используемых модулей следует раздел объявления констант и переменны (var).

В разделе переменных описан целочисленный массив под именем a , целочисленные переменные i, j - счетчики циклов, sredn_n - переменная для хранения индекса ближайшего к среднеарифметическому значению элемента, x - вспомогательная переменная для сортировки элементов массива. И вещественные переменные s,sredn,sredn_c.- необходимые для поиска и удаления ближайшего к средне арифметическому значении элемента.

Тело программы или раздел операторов начинается со слова begin и заканчивается end. В этом разделе описываем действия, которые должна выполнить программа согласно выбранного алгоритма.

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

Перед первым обращением к функции random необходимо с помощью вызова процедуры randomize инициализировать программный генератор случайных чисел, иначе при каждом запуске программы датчик будет выдавать одни и те же числа


7.Описание блоков укрупненной схемы алгоритма на языке Pascal


Ввод и вывод данных

Используем процедуру вывода writeln ( ' Исходный массив ') которая позволит прокомментировать очередность ввода исходных массивов.

Цикл работает до достижения переменной i значения N, то есть до конца массива и в цикле будет выводить элементы, которые получаются с помощью процедуры a[i]:=random(40).

В виде фрагмента программы это запишется следующем образом:

( ' Исходный массив ');

for i:=1 to n do[i]:=random(40);(a[i]:4);

end;


Поиск среднеарифметического значения элементов массива.

Этот фрагмент программы проводит расчет элементов и вывод.


s:=0;i:=1 to n do:=a[i]+s;:=s/n;

writeln(' Среднеарифметическое значение всех элементов массива ',s:7:3); writeln;


Сжатие массива, удаление из него элемента наиболее близкого к среднеарифметическому.

Рассмотренный фрагмент блок-схемы для реализации на языке Pascal будет представлен в следующем виде


sredn_c:=abs(a[1]-s);_n:=1;i:=1 to n do:=abs(a[i]-s);sredn_c > sredn then_n:=i;_c:=sredn;;;

writeln;

writeln(' номер элемента наиболее близкого к среднеарифметическому ',sredn_n:7);

for i:= sredn_n to n do

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


8.Сортировка массива по возрастанию, методом обмена


Следующий цикл реализует алгоритм сортировки массива обменном.

Запись (for i:= 1 to n-2 do) означает, что элементы массива будут обрабатываться, на два раза меньше чем элементов массива. Если предыдущий элемент больше следующего ( a[j]>a[j+1] ), то значения меняются местами. Для перемены местами используется буферная переменная x. Сначала в переменной x сохраняется значение предыдущего элемента массива (x:=a[j]). Затем элементу с этим номером присваивается значение следующего элемента массива (a[j]:=a[j+1]) , после чего следующему элементу массива присваивается значение буферной переменной x.


For i:=1 to n-2 doj:=1 to n-2 doa[j]>a[j+1] then:=a[j];[j]:=a[j+1];[j+1]:=x;;


9.Вывод отсортированного массива


После сортировки выводим преобразованный массив на экран стандартными средствами вывода write(al[i]:4) - вывод элементов массива в строку


writeln ( ' отсортированный массив по возрастанию ');i:=1 to (n-1) do(a[i]:4);

Листинг программы

program Valiev;crt;n=20 ;,sredn,sredn_c:real;,j,sredn_n,x:integer;:array [1..111] of integer;


begin;;( ' Исходный массив ');i:=1 to n doa[i]:=random(40); write(a[i]:4); end;;:=0;i:=1 to n do:=a[i]+s;

s:=s/n;

writeln(' Среднеарифметическое значение всех элементов массива ',s:7:3);

sredn_c:=abs(a[1]-s);_n:=1;i:=1 to n do:=abs(a[i]-s);sredn_c > sredn then_n:=i;_c:=sredn;;;

writeln;

writeln(' номер элемента наиболее близкого к среднеарифметическому ',sredn_n:7);

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


for i:=1 to (n-1) do(a[i]:4);i:=1 to n-2 doj:=1 to n-2 doa[j]>a[j+1] then:=a[j];[j]:=a[j+1];[j+1]:=x;;; ( ' отсортированный массив по возрастанию ');i:=1 to (n-1) do(a[i]:4); ;

end.


10.Тестирование программы


Ниже приведены результаты выполнения программы на примере различных входных данных.


Рис.


Рис.



Список литературы


.Иванов А.Ф., Потапова О.Н. , Салихова Г.Л. Основы алгоритмического языка Pascal.: - Альметьевск: тип. АлНИ, 2007г.

.Потапова О.Н., Салихова Г.Л., Садриева Л.М., Миндиярова О.Г., Мохова О.М., Фахрутдинова Р.Р., Ханова И.А. Методические указания по выполнению курсовой работы по информатике -Альметьевск , 2009г. - 156 с.

.Семакин И.Г., Шестаков А.П. Основы алгоритмизации и программирования. - М.: Академия, 2012 г.


1.Постановка задачи среднеарифметический программа язык Разработка в среде программы для упорядочивания массива по возрастанию. Задан массив A1, A2,…,A20.

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ