Разработка в среде Turbo Pascal программы поиска определенных строк матрицы
Детализация укрупненной схемы алгоритма. Заполнение и вывод элементов двумерного массива. Поиск строк, похожих на первую. Сортировка первой строки. Вывод преобразованного массива. Описание блоков укрупненной схемы алгоритма на языке Turbo Pascal.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 02.06.2015 |
Размер файла | 146,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
КАФЕДРА ИНФОРМАТИКИ
КУРСОВАЯ РАБОТА
ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА»
РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL
НА ТЕМУ: РАЗРАБОТКА В СРЕДЕ TURBO PASCAL ПРОГРАММЫ ПОИСКА ОПРЕДЕЛЕННЫХ СТРОК МАТРИЦЫ.
АЛЬМЕТЬЕВСК 2013
Постановка задачи
Дан массив размера N. Найти количество строк, похожих на первую строку данной матрицы. Различные строки матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках. Отсортировать четные элементы первой строки массива по возрастанию. Для отладки программы элементы массива сформулировать с помощью генератора случайных чисел.
Программа подразумевает заполнение и вывод исходного массива, поиск количества строк, похожих на первую строку, сортировку четных элементов первой строки по возрастанию.
ОПИСАНИЕ АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ ГРАФИЧЕСКИМ СПОСОБОМ
Укрупненная схема алгоритма
Начало
Поиск строк, похожих на первую
Сортировка первой строки
Конец
Детализация укрупненной схемы алгоритма
В программе решаются следующие задачи:
1. Заполнение и вывод элементов двумерного массива.
2. Поиск строк, похожих на первую.
3. Сортировка первой строки.
4. Вывод преобразованного массива.
Заполнение и вывод элементов двумерного массива
Для заполнения и вывода элементов двумерного массива воспользуемся циклом с параметром. Переменную I используем как переменную внешнего цикла, которая будет принимать свои значения от 1 до N, где N=6 с шагом 1. При каждом значении переменной I будет выполняться вложенный цикл с переменной J, которая так же будет принимать значения от 1 до N, при каждом значении переменной J элементу массива с адресацией a[i,j], присвоим случайное значение в диапазоне от 0 до 100. По достижении переменной J значения N цикл заполнения I-той строки массива завершается. Далее переменная I принимает значение I+1 и выше описанные действия заполнения повторяются. По достижении переменной I значения N цикл заполнения массива завершается.
Далее выведем полученный массив на экран, для этого также воспользуемся циклом с параметром. Переменная внешнего цикла I так же будет принимать значения от 1 до N, а переменная J от 1 до N, только на этот раз в теле цикла на экран будет выводиться элемент с соответствующей адресацией. Алгоритм заполнения и вывода массива на экран представлен ниже:
turbo pascal массив алгоритм
I=1,N,1
J=1,N,1
A[I,J]=random(101)
I=1,N,1
J=1,N,1
A[I,J]
Поиск строк, похожих на первую
Организуем цикл с параметром, для этого некой переменной I, которая будет переменной внешнего цикла присвоим значения от 2 до N, т.к сравнивать мы начнем со второй строки, при каждом значении I выполним вложенный цикл, с переменной J, которая будет принимать значения от 1 до N, в теле вложенного цикла организуем еще один вложенный цикл с переменной цикла B со значениями от 1 до N, в теле вложенного цикла на развилке проверим условие: если элемент массива a[I,j] равен элементу массива a[1,b], т.е. сравниваем все элементы в данном случае второй строки (это реализуют циклы с переменными I и J, где I-строка, а J элементы этой строки) с элементами строки 1 (цикл с переменной B), то увеличим некую переменную K на единицу, переменной K будет присваиваться значение нуль при каждом изменении переменной I, переменная К служит счетчиком элементов строки I, которые похожи на элементы строки 1. Далее, по достижении переменной B , (т.е. все элементы первой строки сравнили со всеми элементами I-той строки) на развилке проверим условие: если значение переменной K больше или равно значению N/2, то это означает, что строка I похожа на первую, значит некую переменную С увеличим на единицу (используем ее как счетчик количества строк, похожих на первую), т.к. эта переменная нигде до этого не была обозначена, то по умолчанию она равна нулю. По достижении переменной I значения N, т.е. все строки, начиная со второй по N-ную, были сравнены с первой, выведем количество строк, похожих на первую.
Алгоритм поиска строк, похожих на первую представлен ниже:
I=2,N,1
K=0
J=1,N,1
B=1,N,1
A[i,j]=a[1,b]
INC(K)
k>=round(n/2)
INC(C)
C
Сортировка первой строки
Воспользуемся циклом с параметром, переменную I используем как переменную внешнего цикла, которая будет принимать значения от 1 до N, в теле внешнего цикла при каждом значении переменной I, выполним вложенный цикл, в котором переменная цикла J будет принимать значения от значения 1 до N. Далее в теле вложенного цикла при каждом значении переменной J, на развилке проверим условие: если элемент первой строки массива a[1,I]<a[1,J], и элемент массива а[i,j] четные, то поменяем эти элементы местами. Для этого воспользуемся некой буферной переменной B. Для начала присвоим нашей переменной B значение элемента A[1,I], далее элементу a[1,I] присвоим значение элемента a[1,J], т.е. эти элементы равны, и здесь нам понадобится наша буферная переменная B. Элементу массива a[1,J] присвоим значение переменной B (был произведен обмен элементов местами) по достижении переменной J значения N вложенный цикл завершается и теперь уже элемент массива a[1,I+1] будет сравниваться со всеми элементами аналогично выше описанному. По достижении переменной I значения N цикл завершается.
Алгоритм сортировки представлен ниже:
I=1,N,1
J=1,N,1
(a[1,i]<a[1,j])(а[i,j] mod 2=0)
B=A[1,I]
A[1,I]=A[1,J]
A[1,J]=B
Вывод преобразованного массива
Вывод преобразованного массива аналогичен выводу массива, описанному в первом пункте, когда массива только заполнялся, представим ниже алгоритм вывода преобразованного массива:
I=1,N,1
J=1,N,1
A[I,J]
Блок-схема алгоритма
Начало
ClrScr
Randomize
I=1,N,1
J=1,N,1
A[I,j]=random(101)
I=1,N,1
J=1,N,1
A[I,J]
I=2,N,1
K=0
J=1,N,1
B=1,N,1
a[i,j]=a[1,b]
INC(K)
k>=round(n/2)
INC(C)
C
I=1,N,1
J=1,N,1
(a[1,i]<a[1,j])(a[i,j] mod 2=0)
B=A[1,I]
A[1,I]=A[1,J]
A[1,J]=B
I=1,N,1
J=1,N,1
A[I,J]
Конец
РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ PASCAL
Программа может состоять из: заголовка программы, блока описаний, в который входят: раздел подключаемых модулей, раздел описания меток, раздел описания констант, раздел определения типов данных, раздел описания переменных, раздел описания процедур и функций. Блока операторов. Некоторые вышеуказанные разделы могут отсутствовать в программе.
Для подключения модуля достаточно указать зарезервированное слово USES и список подключаемых модулей в самом начале программы:
USES CRT;
USES CRT используем для подключения процедуры.
В модуле CRT реализованы специальные процедуры и функции для работы с текстовой информацией на дисплее, позволяющие: управлять текстовыми режимами, организовывать окна вывода на экран, настраивать цвета символов на экране, управлять курсором.
Описание констант.
В разделе описаний программы должны быть описаны не только переменные, но и константы, в данной программе константы описаны следующим образом:
Const
N=6;
Где, N=имя константы, 6=значение этой константы.
Описание переменных.
Все переменные используемые в программе должны быть перечислены в разделе описания переменных VAR. Этот раздел состоит из предложений описания переменных.
Размещается он между заголовком программы, подпрограммы или модуля и зарезервированным словом BEGIN, открывающим раздел операторов программы, подпрограммы или модуля.
В программе описаны следующие переменные:
A:ARRAY [1..N,1..N] OF INTEGER;B:ARRAY[1..N]OF INTEGER;
I,J,K,B,C:INTEGER;
Где, A- целочисленный двумерный массив, состоящий из N строк и N столбцов, I,J,K,B,C: целочисленные переменные. Существуют следующие виды типов: real-с вещественной частью, single, double и т.д.
Массив - упорядоченная последовательность величин, имеющих один и тот же тип объединенных одним именем. В описании массива [1..N]- указывает на нижний индекс массива (1) и верхний (N), т.е указывает диапазон (размерность) массива.
Раздел описания переменных начинается со слова BEGIN.
Procedure ClrScr;
Процедура, которая позволяет очистить экран от всей ненужной информации и поместить курсор в левый верхний угол.
Процедура Randomize используется в Паскаль для включения генератора случайных чисел.
В разделе операторов опишем действия, которые должна выполнить программа, согласно выбранного алгоритма. Этот раздел заключен между словами begin и end. В программе может использоваться составной оператор begin end;.
Описание блоков укрупненной схемы алгоритма на языке Pascal
Заполнение и вывод элементов двумерного массива.
Для заполнения элементов массива воспользуемся процедурой Randomize. Randomize, инициализирует встроенный генератор случайных чисел, со случайным значением. Оператор повтора, одно из ключевых слов которого является FOR часто называют оператором повтора с параметром, т.к число повторений задается переменной, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу- поэтому ее называют счетчиком. Оператор повтора FOR применяется в случаях, когда число повторений заранее известно, он состоит из заголовка и тела цикла.
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(101);
Выбранный диапазон значений от 0 до 100.
С помощью оператора writeln описываем выводящееся на экран. Write- оператор, который используется для вывода информации на экран. Оператор WriteLn выполняет то же самое действие, но так как у него есть еще окончание Ln, то после вывода на экран нужного сообщения, он дополнительно переводит курсор на следующую строчку.
writeln('Исходный массив');
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j]:4); writeln;end;
В процедуре Write(A[I,J]:4); цифра 4 означает количество позиций для выводимого символа. Здесь операторы for j:=1 to n do write(a[i,j]:4);writeln; заключены в составной оператор begin end; это сделано из-за того, что по синтаксису использования оператора повтора FOR, после зарезервированного слова DO можно использовать только один оператор, а нам необходимо использовать несколько. Поиск строк, похожих на первую.
Условный оператор позволяет проверить некоторое условие и в зависимости от результата выполнить тот или иной оператор или группу операторов. С помощью условных операторов программируются алгоритмы разветвляющейся структуры. Формат условного оператора: IF <условие> THEN <оператор1> ELSE <оператор2> IF,THEN,ELSE- зарезервированные слова. Оператор2 выполняется, только при не выполнении условия, иначе выполняется оператор1.
Функция INC(X,N) позволяет увеличить переменную X на N. Если переменная N не указана, то переменная X увеличивается по умолчанию на единицу, переменные X и N должны быть целочисленного типа.
for i:=2 to n do begin k:=0;
for j:=1 to n do
for b:=1 to n do
if a[i,j]=a[1,b] then inc(k);
if k>=round(n/2) then begin inc(c);writeln('Строка ', i , ' похожа на первую');end;end;
Writeln('Количество строк ',c);
Сортировка первой строки.
for i:=1 to n do
for j:=1 to n do
if (a[1,i]<a[1,j])and (а[i,j] mod 2=0)then begin
b:=a[1,i];a[1,i]:=a[1,j];a[1,j]:=b;end;
Функция X MOD Y = Z , позволяет проверить остаток (Z) от деления переменной X на Y, т.е. в данном случае I/2 должно равняться нулю.
Вывод преобразованного массива.
writeln('Преобразованный массив');
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j]:4);writeln;end;
Листинг программы
Program Massiv;
uses crt;
const n=6;
var i,j,k,b,c:integer;
a:array[1..n,1..n]of integer;
begin
clrscr; randomize;
writeln('Исходный массив:');
for i:=1 to n do
for j:=1 to n do a[i,j]:=random(101);
for i:=1 to n do begin
for j:=1 to n do write(a[i,j]:4);writeln;end;
for i:=2 to n do begin k:=0;
for j:=1 to n do
for b:=1 to n do if a[i,j]=a[1,b] then inc(k);
if k>=round(n/2) then begin inc(c);writeln('Строка ', i , ' похожа на первую');end;end;
Writeln('Количество строк ',c);
for i:=1 to n do
for j:=1 to n do
if (a[1,i]<a[1,j])and(a[i,j] mod 2=0)then begin
b:=a[1,i];a[1,i]:=a[1,j];a[1,j]:=b;end;
writeln('Преобразованная матрица');
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j]:4);writeln;end;end.
Тестирование программы
Ниже приведены результаты выполнения программы на примере различных входных данных.
Список использованной литературы
1. Иванов А.Ф., Потапова О.Н., Салихова Г.Л. Основы алгоритмического языка Pascal: Учебное пособие. - Альметьевск: АГНИ, 2007г.
2. Потапова О.Н., Салихова Г.Л., Садриева Л.М., Миндиярова О.Г., Мохова О.М., Фахрутдинова Р.Р., Ханова И.А. Информатика: Методические указания по выполнению курсовой работы по дисциплине «Информатика» для бакалавров направления подготовки 131000 «Нефтегазовое дело» всех форм обучения - Альметьевск: АГНИ, 2013.
3. Павловская Т.А. Паскаль. Программирование на языке высокого уровня.-СПб.:- «Питер», 2004г.
4. Немнюгин С. А. TURBO PASCAL. Учебник. - СПб.: «Питер», 2000
Размещено на Allbest.ur
...Подобные документы
Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.
курсовая работа [446,0 K], добавлен 19.06.2014Описание алгоритма решения задачи графическим способом. Вывод элементов массива. Описание блоков укрупненной схемы алгоритма на языке Pascal. Листинг программы, а также ее тестирование. Результат выполнения c помощью ввода различных входных данных.
контрольная работа [150,4 K], добавлен 03.05.2014Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.
контрольная работа [360,4 K], добавлен 13.06.2012Особенности поиска среднеарифметического значения элементов массива. Общая характеристика проблем разработки в среде Turbo Pascal программы упорядочивания массива по возрастанию. Рассмотрение основных этапов разработки программы на языке PASCAL.
курсовая работа [896,7 K], добавлен 18.05.2014Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.
курсовая работа [359,0 K], добавлен 23.05.2012Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.
курсовая работа [198,1 K], добавлен 03.02.2010Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.
лабораторная работа [123,5 K], добавлен 15.01.2014Теоретические и практические аспекты решения прикладных задач с применением функций и процедур структурного (модульного) программирования. Особенности разработки схемы алгоритма и программы для вычисления массива z на языке Turbo Pascal 7.0, их описание.
курсовая работа [241,7 K], добавлен 11.12.2009Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.
методичка [17,8 K], добавлен 25.11.2010Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.
лабораторная работа [12,7 K], добавлен 14.05.2011Написание программы "телеграф", который принимает от пользователя сообщения и выводит его на экран в виде последовательности точек и тире. Их вывод сортируется звуковым сигналом соответствующей длительности. Программа написана на языке Turbo Pascal.
курсовая работа [565,6 K], добавлен 18.08.2008GetMatrDop как процедура определяет значение элемента транспонированной матрицы дополнений. Знакомство с этапами разработки в среде Turbo Pascal программы сортировки элементов, находящихся на главной диагонали матрицы. Особенности тестирования программы.
курсовая работа [780,4 K], добавлен 20.11.2014Особенности разработки программ на языке Turbo Pascal на примере программы обработки массива данных с построением диаграммы. Функции программы и основные требования к ней. Состав входных и выходных данных. Использование предметной области "Садовод".
курсовая работа [789,1 K], добавлен 13.03.2013Разработка программы на языке Turbo Pascal, обеспечивающей работу пользователя в диалоговом режиме с возможностью выбора функций с помощью одноуровневого меню вертикального типа. Блок-схема и листинг программы, описание руководства пользователя.
курсовая работа [1,5 M], добавлен 17.03.2014Разработка алгоритма поставленной задачи по обработке числовой информации в среде Turbo Pascal 7.0 с базовым языком программирования Pascal, отладка программы, реализующей разработанный алгоритм. Описание структуры программы, ее вспомогательных процедур.
курсовая работа [668,0 K], добавлен 25.02.2010Ввод и вывод значений целого, вещественного, логического и перечисляемого типов. Табулирование функции на отрезке с заданным количеством точек. Рекурсивная функция - вычисление суммы, произведения, количества, минимума, максимума и проверка условия.
курсовая работа [75,6 K], добавлен 07.03.2010Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.
лабораторная работа [3,7 M], добавлен 22.03.2012Разработка программы на языке Turbo Pascal 7.0 для преобразования кинетической схемы протекания химических реакций при изотермических условиях в систему дифференциальных уравнений. Ее решение в численном виде методом Рунге-Кутта четвертого порядка.
курсовая работа [929,7 K], добавлен 06.01.2013