|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Пример сортировки целых чиселНа дисковом файле записана последовательность целых чисел. Необходимо определить количество этих чисел и вывести их на экран в порядке возрастания. Для сортировки удобно использовать метод вставки. Из первого прочитанного элемента файла создается список из одного элемента. Очевидно, что этот список является упорядоченным. Затем следует повторение операций: - чтение из файла одного очередного элемента; - просмотр упорядоченного списка и сравнение элементов списка с очередным прочитанным элементом; - включение прочитанного элемента в список перед первым же элементом списка, оказавшимся больше прочитанного. Текст программы procedure TForm1.Button1Click(Sender: TObject); type pn=^dp; dp=record i:integer; p:pn end; var t,r,q,s:pn; f:TextFile; begin AssignFile(f,'data.txt'); Reset(f); new(r); read(f,r^.i); r^.p:=nil; new(t); t^.p:=r; t^.i:=1; repeat r:=t; q:=r; new(s); read(f,s^.i); t^.i:=t^.i+1; repeat if r^.p^.i<s^.i then q:=q^.p; r:=r^.p until r^.p=nil; s^.p:=q^.p; q^.p:=s until eof(f); CloseFile(f); Memo1.Lines.Add('n='+IntToStr(t^.i));r:=t; repeat r:=r^.p; Memo1.Lines.Add(IntToStr(r^.i)); until r^.p=nil; end; Результат Для файла, содержащего в любом порядке 4 целых числа – 16, 12, 14 и 6, на экран выводятся: n=4 16. В программе использовались: s – указатель, ссылающийся на переменные, содержащие очередные прочитанные целые числа из файла; t – указатель для так называемой заглавной переменной, содержащей количество элементов списка; r – указатель построенного упорядоченного списка, ссылающийся на первый элемент списка; q – рабочий указатель, дающий ссылку на элемент списка, после которого следует включить элемент, прочитанный из файла. Рабочее задание Составить программу, предусматривающую контрольный вывод исходных данных и результатов в окна. Составить отчет, содержащий: − задание; − принятые обозначения; − текст программы; − результаты. Варианты заданий к лабораторной работе № 5 1. В динамической памяти разместить массив записей следующей структуры: наименование товара, количество на складе, цена единицы продукции, дата поступления. Найти товар, количество которого максимально. 2. В динамической памяти разместить массив записей следующей структуры: наименование товара, количество на складе, цена единицы продукции, дата поступления. Переписать часть массива в другое место динамической памяти, оставив только те товары, количество которых на складе меньше 100 единиц. 3. В динамической памяти разместить массив записей следующей структуры: наименование товара, количество на складе, цена единицы продукции, дата поступления. Из этого массива сформировать массив, содержащий наименование товара и количество на складе. Новый массив разместить в динамической области памяти. 4. Разместить в динамической памяти массив целых чисел. Определить наибольшее из чисел. 5. Разместить в динамической памяти массив вещественных чисел. Найти наименьшее из чисел. 6. Дан массив ссылок на вещественные числа. Проверить, есть ли в массиве хотя бы два элемента, ссылающиеся на одинаковые числа. 7. Составить программу, которая помещает 25 случайных целых чисел в диапазоне от 0 до 100 в упорядоченный список. Вычислить среднее арифметическое этого списка. 8. Составить программу, в результате работы которой заданный во входном файле текст будет распечатан в обратном порядке. Для решения задачи использовать список. 9. Составить программу, которая по исходному списку строит два новых списка: один из положительных элементов, а другой из остальных элементов списка. 10. Составить программу проверки равенства двух заданных списков. 11. Составить программу вхождения одного заданного списка в другой. 12. Составить список сведений о семьях: фамилия, количество членов семьи, количество детей. Добавить элемент в конец списка. 13. Составить список сведений о семьях: фамилия, количество членов семьи, количество детей. Выдать информацию о семьях, имеющих 3 и более детей. 14. Составить список сведений о семьях: фамилия, количество членов семьи, количество детей. Выдать информацию о семьях, состоящих из 5 и более членов. 15. Составить список сведений о семьях: фамилия, количество членов семьи, количество детей. Выдать информацию о семье, имеющей наибольшее количество детей. 16. Составить список сведений о семьях: фамилия, количество членов семьи, количество детей. Выдать информацию о семье, состоящей из наибольшего количества членов семьи.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |