Разработка в среде Turbo Pascal программы упорядочивания массива по возрастанию
Особенности поиска среднеарифметического значения элементов массива. Общая характеристика проблем разработки в среде Turbo Pascal программы упорядочивания массива по возрастанию. Рассмотрение основных этапов разработки программы на языке PASCAL.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.05.2014 |
Размер файла | 896,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1.Постановка задачи
среднеарифметический программа язык
Разработка в среде программы для упорядочивания массива по возрастанию. Задан массив A1, A2,…,A20. найти номер элемента массива, наиболее близкого к среднему арифметическому значению элементов массива, считая, что такой элемент один. Сжать массив, исключив из него элемент с найденным номером. Полученный массив упорядочить по возрастанию методом обмена и вывести на печать. Для отладки программы исходный массив сформировать с помощью генератора случайных чисел.
Блок-схема
2.Описание алгоритма решения задачи графическим способом
Укрупнённая схема алгоритма
Детализация укрупненной схемы алгоритма
В программе решаются следующие подзадачи:
1. Формирование массива.
2. Поиск среднеарифметического значения элементов массива.
3. Сжатие массива, удаление из него элемента наиболее близкого к среднеарифметическому.
4. Сортировка массива по возрастанию, методом обмена
5. Вывод отсортированного массива.
Формирование массива.
Как говаривалось в условиях задачи, ввод элементов массива будем осуществлять с помощью генератора случайных чисел. Мы берём интервал можно брать любой. Поэтому выберем интервал от 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).
В виде фрагмента программы это запишется следующем образом:
writeln ( ' Исходный массив ');
for i:=1 to n do
begin
a[i]:=random(40);
write(a[i]:4);
end;
Поиск среднеарифметического значения элементов массива.
Этот фрагмент программы проводит расчет элементов и вывод.
s:=0;
for i:=1 to n do
s:=a[i]+s;
s:=s/n;
writeln(' Среднеарифметическое значение всех элементов массива ',s:7:3); writeln;
Сжатие массива, удаление из него элемента наиболее близкого к среднеарифметическому.
Рассмотренный фрагмент блок-схемы для реализации на языке Pascal будет представлен в следующем виде
sredn_c:=abs(a[1]-s);
sredn_n:=1;
for i:=1 to n do
begin
sredn:=abs(a[i]-s);
if sredn_c > sredn then
begin
sredn_n:=i;
sredn_c:=sredn;
end;
end;
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 do
for j:=1 to n-2 do
if a[j]>a[j+1] then
begin
x:=a[j];
a[j]:=a[j+1];
a[j+1]:=x;
end;
9.Вывод отсортированного массива
После сортировки выводим преобразованный массив на экран стандартными средствами вывода write(al[i]:4) - вывод элементов массива в строку
writeln ( ' отсортированный массив по возрастанию ');
for i:=1 to (n-1) do
write(a[i]:4);
Листинг программы
program Valiev;
uses crt;
const n=20 ;
var
s,sredn,sredn_c:real;
i,j,sredn_n,x:integer;
a:array [1..111] of integer;
begin
clrscr;
randomize;
writeln ( ' Исходный массив ');
for i:=1 to n do
begin a[i]:=random(40); write(a[i]:4); end;
writeln;
s:=0;
for i:=1 to n do
s:=a[i]+s;
s:=s/n;
writeln(' Среднеарифметическое значение всех элементов массива ',s:7:3);
sredn_c:=abs(a[1]-s);
sredn_n:=1;
for i:=1 to n do
begin
sredn:=abs(a[i]-s);
if sredn_c > sredn then
begin
sredn_n:=i;
sredn_c:=sredn;
end;
end;
writeln;
writeln(' номер элемента наиболее близкого к среднеарифметическому ',sredn_n:7);
for i:= sredn_n to n do
a[i]:=a[i+1];
for i:=1 to (n-1) do
write(a[i]:4);
For i:=1 to n-2 do
for j:=1 to n-2 do
if a[j]>a[j+1] then
begin
x:=a[j];
a[j]:=a[j+1];
a[j+1]:=x;
end;
writeln;
writeln ( ' отсортированный массив по возрастанию ');
for i:=1 to (n-1) do
write(a[i]:4);
readkey ;
end.
10.Тестирование программы
Ниже приведены результаты выполнения программы на примере различных входных данных.
Рис.
Рис.
Список литературы
1. Иванов А.Ф., Потапова О.Н. , Салихова Г.Л. Основы алгоритмического языка Pascal.: - Альметьевск: тип. АлНИ, 2007г.
2. Потапова О.Н., Салихова Г.Л., Садриева Л.М., Миндиярова О.Г., Мохова О.М., Фахрутдинова Р.Р., Ханова И.А. Методические указания по выполнению курсовой работы по информатике -Альметьевск , 2009г. - 156 с.
3. Семакин И.Г., Шестаков А.П. Основы алгоритмизации и программирования. - М.: Академия, 2012 г.
Размещено на Allbest
Подобные документы
Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Особенности разработки программ на языке Turbo Pascal на примере программы обработки массива данных с построением диаграммы. Функции программы и основные требования к ней. Состав входных и выходных данных. Использование предметной области "Садовод".
курсовая работа [789,1 K], добавлен 13.03.2013Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.
курсовая работа [359,0 K], добавлен 23.05.2012Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.
лабораторная работа [12,7 K], добавлен 14.05.2011GetMatrDop как процедура определяет значение элемента транспонированной матрицы дополнений. Знакомство с этапами разработки в среде Turbo Pascal программы сортировки элементов, находящихся на главной диагонали матрицы. Особенности тестирования программы.
курсовая работа [780,4 K], добавлен 20.11.2014Разработка программы на языке Turbo Pascal, обеспечивающей работу пользователя в диалоговом режиме с возможностью выбора функций с помощью одноуровневого меню вертикального типа. Блок-схема и листинг программы, описание руководства пользователя.
курсовая работа [1,5 M], добавлен 17.03.2014Теоретические и практические аспекты решения прикладных задач с применением функций и процедур структурного (модульного) программирования. Особенности разработки схемы алгоритма и программы для вычисления массива z на языке Turbo Pascal 7.0, их описание.
курсовая работа [241,7 K], добавлен 11.12.2009Описание этапов разработки программы "Справочник покупателя" в среде Turbo Pascal, которая может быть использована, как обычными покупателями, так и организациями. Проектирование интерфейса программы, запросов пользователя, руководства по использованию.
курсовая работа [237,8 K], добавлен 11.01.2011Характеристика вычислительной системы и инструментов разработки. Программирование на языке Pascal в среде Turbo Pascal и на языке Object Pascal в среде Delphi. Использование процедур, функций, массивов, бинарного поиска. Создание базы данных в виде файла.
отчет по практике [2,1 M], добавлен 02.05.2014Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.
лабораторная работа [3,7 M], добавлен 22.03.2012