КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
СПМ у зовнішньому фінансовому аналізі
Repeat Begin Begin Repeat Begin Begin Begin Begin Repeat Begin Begin Begin Begin Begin Begin Repeat Begin Begin Repeat Begin Begin Begin Begin Begin Var Type TNode = record name: string [50]; { Имя каталога/файла } size: LongInt; { Размер файла (байт) } node_type: Char; { Тип узла (файл - 'f' / каталог-'c') } up, down: Pointer; { Указатели на предка и список потомков } last, next: Pointer; { Указатели на соседние узлы } end;
n, i, l, error: Integer; current_root: Pointer; pnt, current: ^TNode; str: string;
{ Отображение физического оглавления диска в логическую структуру } procedure CreateTree(local_root:Pointer); var s: TSearchRec; local_node, local_r_node, local_last: ^TNode; { Создание нового узла в дереве каталогов и файлов } procedure NewNode; New(local_node); local_node^.last:=local_last; if local_last <> nil then local_last^.next:=local_node; local_node^.next:= nil; local_node^.down:= nil; local_node^.up:=local_r_node; if local_r_node^.down = nil then local_r_node^.down:=local_node; local_node^.name:=local_r_node^.name+'\'+s.name; if faDirectory = 0 then local_node^.node_type:='f' else local_node^.node_type:='c'; local_node^.size:=s.size; local_last:=local_node; end; { Собственно процедура } local_r_node:=local_root; local_last:= nil; error:=FindFirst(local_r_node^.name+'\*.*',faAnyFile,s); if error = 0 then if (s.name<>'.') and (s.name<>'..') then NewNode; while error = 0 do error:=FindNext(s); if (error = 0) and (s.name<>'.') and (s.name<>'..') then NewNode; end; end; if local_r_node^.down <> nil then local_node:=local_r_node^.down; { Рекурсивный вызов } if local_node^.node_type = 'c' then CreateTree(local_node); local_node:=local_node^.next until local_node = nil; end; end;
{ Вывод оглавления текущего каталога } procedure CurrentList; current:=current_root; WriteLn('Current directory - ', current^.name); if current^.node_type = 'c' then pnt:=current^.down; i:=1; { Проходим каталог в дереве } WriteLn(i:4,'-',pnt^.name); pnt:=pnt^.next; Inc(i); until pnt = nil; end; end;
{ Навигация в дереве каталогов. Перемещение на один уровень вниз } procedure MoveDown; current:=current_root; if current^.down <> nil then current:=current^.down; WriteLn('Id in list'); Read(l); i:=1; while (i < l) and (current^.next <> nil) do current:=current^.next; Inc(i); end; if (current^.node_type = 'c') and (current^.down <> nil) then current_root:= current; end; end;
{ Навигация в дереве каталогов. Перемещение на один уровень вверх } procedure MoveUp; current:=current_root; if current^.up <> nil then current_root:=current^.up; end;
{ Подсчет числа файлов и подкаталогов иерархической структуры каталога } procedure Count; var n_files, n_cats: Integer; procedure count_in(local_root: Pointer); var local_node, local_r_node: ^TNode; local_r_node:=local_root; if local_r_node^.down <> nil then local_node:=local_r_node^.down; if local_node^.node_type = 'f' then Inc(n_files) else Inc(n_cats); count_in(local_node); end; local_node:=local_node^.next until local_node = nil; end; end; { Собственно процедура } n_files:=0; n_cats:=0; count_in(current_root); WriteLn('files: ',n_files, ' directories: ', n_cats); end;
{ Расчет физического объема иерархической структуры каталога } procedure CountMem; var mem: LongInt; procedure count_m_in(local_root: Pointer); var local_node, local_r_node: ^TNode; local_r_node:=local_root; if local_r_node^.down <> nil then local_node:=local_r_node^.down; if local_node^.node_type = 'f' then mem:=mem+local_node^.size else count_m_in(local_node); local_node:=local_node^.next; until local_node = nil; end; end; { Собственно процедура } mem:=0; count_m_in(current_root); WriteLn('mem ', mem, ' bytes'); end;
New(current); { Инициализация корня дерева каталогов и указателей для навигации } current_root:=current; WriteLn('Directory?'); Read(str); WriteLn(str); current^.name:=str; current^.last:= nil; current^.next:= nil; current^.up:= nil; current^.down:= nil; current^.node_type:='c'; { Создание дерева каталогов } CreateTree(current); if current^.down = nil then current^.node_type:=' '; WriteLn('1-List'); WriteLn('2-Down'); WriteLn('3-Up'); WriteLn('4-Files'); WriteLn('5-Volume'); Readln(n); if n = 1 then CurrentList; if n = 2 then MoveDown; if n = 3 then MoveUp; if n = 4 then Count; if n = 5 then CountMem; until n = 0; end. Задания для самостоятельной работы 1. Работа некоторого устройства кодируется одним байтом. Самый старший разряд байта позволяет определить состояние устройства (1 – включено, 0 – выключено). Остальные разряды задают режим работы. Привести пример подпрограммы, устанавливающей заданный режим работы устройства, если оно включено. Подпрограмма должна быть функцией, возвращающей True при задании режима и False, если устройство выключено. Пример режима xx101x1 (x – прежнее значение разряда).
2. Работа 8 различных устройств кодируется одним байтом. Разряд байта с порядковым номером n позволяет определить состояние данного устройства (1 – включено, 0 – выключено). Привести пример подпрограммы, определяющей работу любого числа заданных устройств. Например, определить, включены ли устройства с порядковыми номерами 1,4,7.
3. Создать множество из чисел Фибоначчи: F(n)=F(n-1)+F(n-2), F(0)=0, F(1)=1. Множество должно содержать N первых чисел последовательности.
4. Привести пример подпрограммы считывания числовых данных из текстового файла. Данные вещественного типа, расположены в файле в один столбец. Подпрограмма-функция должна возвращать True при успешном срабатывании и False при ошибке, а объем прочитанных данных через параметр-переменную.
5. Привести пример подпрограммы, выполняющей транспонирование матрицы. Подпрограмма-процедура должна получать матрицу A (параметр-переменная) и ее размерность N.
6. Массив объявлен следующим образом:
var r: array [10..25] of Real;
Определить, сколько занимает в памяти массив, смещение к элементу с порядковым номером 5, адрес элемента с порядковым номером 10.
7. В массиве содержится 100 вещественных чисел. Выполнить их сортировку. Обосновать выбор алгоритма сортировки.
8. Массив объявлен следующим образом:
var w: array [10..15][5..10] of Word;
Определить, сколько занимает в памяти массив и смещение к элементу [12,8].
9. Массив объявлен следующим образом:
var w: array [1..100][1..50] of Word;
Привести пример подпрограммы удаления заданного столбца или строки.
10. Создать динамический массив, размерностью N вещественных чисел. Инициализировать его случайными числами в диапазоне [0..1]. Вычислить процент чисел (от общего объема), меньших числа, заданного пользователем. Вывести результат и удалить массив из памяти.
11. Информация о студенте включает: ФИО, порядковый номер, название факультета, номер специальности, дату рождения, адрес проживания, телефон. Информация о студентах хранится в виде записей в массиве. Отсортировать всех студентов в алфавитном порядке. Обосновать выбор алгоритма сортировки.
12. Информация о студенте включает: ФИО, порядковый номер, название факультета, номер специальности, дату рождения, адрес проживания, телефон. Создать список L класса TList и разработать процедуру добавления в него данных-записей о студентах.
13. Информация о студенте включает: ФИО, порядковый номер, название факультета, номер специальности, дату рождения, адрес проживания, телефон. Информация о студентах хранится в виде записей в списке L класса TList. Разработать процедуру, выполняющую поиск данных (по полю записи) о требуемом студенте в списке.
14. В списке L класса TList находятся адреса N объектов. Удалить список L из памяти.
15. Использовать следующий прототип функции для выполнения арифметических операций:
TOperation = function (x,y,z: Integer): Real;
16. Привести пример реализации программного модуля с процедурами, демонстрирующими работу с кольцевой очередью. Работа очереди должна быть построена на структуре данных «вектор» и «связный список».
17. Разработать функцию поиска указанной строки в текстовом файле. При обнаружении первого вхождения строки функция должна возвращать True и координаты первого символа, False при отсутствии искомой строки.
18. Разработать функцию инвертирования заданной строки.
19. Разработать алгоритм доступа к массиву числовых данных используя механизм хеширования. Применить закрытый метод адресации для разрешения коллизий.
Литература 1. Ахо А., Холкрофт Д., Ульман Д. Структуры данных и алгоритмы. – Вильямс 2000. 2. Бен-Ари М. Языки программирования. Практический сравнительный анализ. – М.: Мир 2000. 3. Вирт Н. Алгоритмы и структуры данных. – Невский Диалект 2001. 4. Зубов В.С. Структуры и методы обработки данных. Практикум в среде Delphi – Филинъ 2004. 5. Кнут Д. Искусство программирования для ЭВМ. Тома 1-3. – Вильямс 2000. 6. Кубенский А. Создание и обработка структур данных в примерах на Java. – BHV-СПб 2003. 7. Роберт Седжвик. Фундаментальные алгоритмы на С. Части 1-5. – Диасофт 2003. 8. Таланов В.А., Алексеев В.Е. Графы и алгоритмы. Структуры данных. Модели вычислений. – Бином 2006.
Дата добавления: 2014-01-07; Просмотров: 310; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |