скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыЛабораторная работа: Обработка текстовых файлов

Процедура Info(var ft:TEXT) предназначена для вывода вспомогательной информации о программе и о задании на курсовую работу. Следует заметить, что процедура дублирует вывод информации на экран монитора и в текстовый файл с результатами выполнения программы. При этом, параметр ft:TEXT как раз и задает файл, в который осуществляется вывод. Условием применения данной процедуры является то, что перед вызовом процедуры файловой переменной ft должно быть назначено имя физического файла на жестком диске при помощи процедуры ASSIGN. Кроме того, файл предварительно должен быть открытым для записи при помощи функции REWRITE. Текст процедуры приведен в строках 15-35.

Процедура GenerateSochet(var Sochet:Arr2;n,m:integer;var kol:integer) предназначена для генерации сочетаний из n натуральных чисел от 1 до N по m.

Сгенерированные последовательности будут возвращаться через параметр Sochet.

Параметр N задает количество чисел из которых следует выбирать сочетания.

Параметр M задает по сколько чисел участвует в одном сочетании.

Через параметр KOL будет возвращено общее количество сгенерированных сочетаний.

То есть в выходном мас сиве Sochet следует просмотреть строки от 1 до KOL это и будут сочетания, причем в каждой строке следует анализировать только элементы от 1 до m.

Алгоритм генерации сочетаний приведен на рисунке А.1 приложения А. Код процедуры приведен в строках 49 -70 приложения Б.

Генерация сочетаний выполняется по следующем правилу:

1.         Начальное сочетание образует последовательность 1, 2, .. m, а последнее n-m+1,…,n.

2.         Переход к следующему сочетанию осуществляется по следующему правилу: требуется просмотреть текущее сочетание с конца и найти элемент, который можно увеличить. То есть такой элемент что Sochet[kol,i] <> n-m+i. Далее увеличиваем этот элемент на 1, а оставшуюся часть сочетания заполняем числами натурального ряда большими измененного элемента в порядке их следования.

Функция Summ(Chisla:Arr;Idxs:Arr2;m,nom:integer):integer предназначена для определения суммы чисел соответствующего сочетания, где:

Chisla – масив исходных чисел, которые будут суммироваться;

Idxs – массив сгенерированных сочетаний (содержит только номера позиций);

M – количество элементов в сочетании;

NOM – номер сочетания из массива Idxs, сумму которого нужно найти.

В функции будет анализироваться строка NOM массива Idxs, точнее не вся строка, а только первые M элементов. Эти элементы задают номера чисел в массиве Chsila, которые нужно просуммировать.

Алгоритм выполнения описанных действий приведен на рисунке А.2 приложения А, а код функции приведен в строках 36-48 приложения Б.


3.3 Алгоритм основной программы

После этого осуществляется ввод исходных данных, а именно: числа элементов последовательности N и самой последователности чисел. Ввод исходных данных организован в строках 76-85 листинга в приложении Б.

После ввода исходных данных организуется цикл по m (по количеству элементов в сочетании). В теле этого цикла выполняются действия:

- генерируются все возможные сочетания по m натуральных элементов 1.. N при помощи процедуры GenerateSochet;

- организуется цикл по i, в котором перебираются все из сгенерированных на предыдущем этапе сочетания и выполняются действия:

- вывод на экран и в файл элементов сочетания (цикл по j в строках 95-99);

- вычисление суммы при помощи функции SUMM (строка 100);

- проверка полученой суммы на деление на K (остаток от деления определяется при помощи оператора MOD), (строки 103-113);

Для преобразования целого числа в строку используется процедура STR(a;var S:string), где a задает целое число, а через параметр S возвращается строковое значение. Если сумма Sm удовлетворяет условию и искомое сочетание чисел найдено, устанавливается флаг fnd и осуществляется выход из цикла.

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


4. ИНСТРУКЦИЯ ОПЕРАТОРУ

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

После запуска программы появляется окно, изображенное на рисунке 4.1.

Рисунок 4.1 – Главное окно программы

После этого пользователь может вести длину последовательности. На рисунке 4.2 задан пример реакции программы в случае ошибочного набора.

Рисунок 4.2 – Реакция программы на ошибочный ввод количества N


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

Рисунок 4.3 – Результат работы программы

На рисунке 4.4 приведен пример выполнения программы, когда среди всех сочетаний не было найдено ни одного , удовлетворяющего условию задачи.

Рисунок 4.4 – Результат работы программы (поиск неудачен)

Функционирование программы полностью соответствует заданию.


ВЫВОДЫ

Данная курсовая работа была выполнена в полном соответствии поставленному заданию и отлажена в среде Turbo Pascal 7.0. В ходе выполнения курсовой работы была разработана программа для обработки числовой последовательности.

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


Перечень ссылок

1.  Зуев Е.А. Программирование на языке Turbo Pascal 6.0,7.0. – М.: Радио и связь, Веста, 1993.

2.     Фаронов В.В. Turbo Pascal 7.0. Начальный курс. - М.: Нолидж, 2000.

3.     Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка. — М.: "Финансы и статистика", 1982. — С. 151.

4.     Вирт Н. Алгоритмы+структуры данных= программы. — М.: "Мир", 1985. — С. 406.

5.     Грогоно П. Программирование на языке Паскаль. — М.: "Мир", 1982. — С. 384.

6.     Перминов О. Н. Язык программирования Паскаль : Справочник. — М.: "Радио и связь", 1989. — С. 128. — ISBN 5-256-00311-9

7.     Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: "БХВ-Петербург", 2001. — С. 528. — ISBN 5-94157-112-7

8.     Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. М.: "Диалектика", 2005. — С. 576. — ISBN 5‐8459‐0935‐X

9.     Гранпер Ж., Коттэ Р. Трехмерная графика на Турбо-Паскале

10.   Белецкий Я. Турбо-Паскаль с графикой для ПК.- М.: Машиностроение, 1991. - 320 с.

11.   Бородич Ю.С. и др. Паскаль для ПК: Справочное пособие. - МН.: Высш. шк.: БФ ГИТМП "НИКА", 1991. - 365 с.

12.   Зуев Е.А. Язык программирования Turbo Pascal 6.0. - М.: Унитех, 1992. - 298 с.

13.   Фаронов В.В. Турбо-Паскаль (в 3 книгах). - М.: "МВТУ-ФЕСТО ДИДАКТИК", 1992-1993.


 
ПРИЛОЖЕНИЕ А

Алгоритм программы

Рисунок А.1 – Алгоритм процедуры генерации сочетаний GenerateSochet


Рисунок А.2 – Алгоритм функции определения суммы SUMM


Рисунок А.3 – Алгоритм выполнения тела программы


ПРИЛОЖЕНИЕ Б

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

1.                                                                                                                                                           unit Unit1;

2.                                                                                                                                                           program sochet;

3.                                                                                                                                                           uses crt;

4.                                                                                                                                                           type

5.                                                                                                                                                           Arr = array[1..20] of integer;

6.                                                                                                                                                           Arr2=array[1..1000,0..20] of byte;

7.                                                                                                                                                           var

8.                                                                                                                                                           i,j,m,n,k,kol:integer;

9.                                                                                                                                                           Sm : integer;

Страницы: 1, 2, 3, 4, 5, 6, 7, 8


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.