Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Работа с объектами- векторами

Поиск

Для работы с большими объемами данных создаем регулярную структуру данных - массив. Основная трудность при работе со статическими массивами - это большая память, запрашиваемая при описании массивов. Решение задачи упрощается при использовании динамических структур или массивов с указателями. В данном разделе задачника предлагается разрабатывать объекты для обработки структуры данных типа массива.

2.2.1. Разработать объект-вектор. Даны две последовательности А и В. Последовательности хранятся в файлах. Количество элементов в последовательностях неизвестно. Для обработки последовательностей описать методы: шейкер-сортировки, создания последовательности из не совпадающих элементов каждой из последовательностей, ввода и вывода всех последовательностей. Вывод результирующей последовательности сопровождать выводом номеров элементов в исходных последовательностях. Сортировку сравнить по скорости с методом простых перестановок. [Л.1, 2, 3]

2.2.2. Разработать объект-вектор. Дана последовательность А. Последовательность хранится в файле. Количество элементов последовательности неизвестно. Для обработки последовательности описать методы: сортировки простыми вставками, определения сумм отрицательных и положительных элементов, суммы всех элементов, а также индексов только положительных и только отрицательных элементов. Сортировку сравнить по скорости с методом простых перестановок. [Л.1, 2, 3]

2.2.3. Разработать объект-вектор. Даны последовательности А и В. Последовательности хранятся в файлах. Количество элементов в последовательностях неизвестно. Для обработки последовательностей описать методы: сортировки простыми включениями, создания последовательности из элементов, не входящих в одну из последовательностей, но входящих в другую, ввода и вывода всех последовательностей. Сортировку сравнить по скорости с методом пузырька.

2.2.4. Разработать объект-вектор. Даны последовательности А и В. Последовательности хранятся в файлах. Количество элементов в последовательностях неизвестно. Для обработки последовательностей описать методы: быстрой сортировки, создания последовательности из элементов, входящих в каждую из последовательностей только по одному разу, ввода и вывода всех последовательностей. Сортировку сравнить по скорости с методом простых перстановок. [Л.1, 2, 3]

2.2.5. Разработать объект-вектор. Даны последовательности А и В. Последовательности хранятся в файлах. Количество элементов в последовательностях неизвестно. Для обработки последовательностей описать методы: сортировки простым выбором, создания последовательности из 2-х исходных последовательностей, ввода и вывода всех последовательностей. Вывод результирующей последовательности сопровождать выводом номеров элементов в исходных последовательностях. Сортировку сравнить по скорости с методом простых перестановок. [Л.1, 2, 3]

2.2.6. Разработать объект-вектор. Дана последовательность А. Последовательность хранится в файле. Количество элементов в последовательности неизвестно. Для обработки последовательностей описать методы: сортировки простыми включениями, создания последовательности, в которой сначала стоят все положительные элементы, а затем все отрицательные, ввода и вывода всех последовательностей. Вывод результирующей последовательности сопровождать выводом номеров элементов в исходной последовательностях. Сортировку сравнить по скорости с методом простых перстановок.

2.2.7. Разработать объект-вектор. Дана последовательность А. Последовательность хранится в файле. Количество элементов в последовательности неизвестно. Для обработки последовательностей описать методы: сортировки простым выбором, Обработки последовательности, в форме -- <число1> <количество>,...,<число2> <количество>, ввода и вывода всех последовательностей. Сортировку сравнить по скорости с методом простых перестановок.

2.2.8. Разработать объект-вектор. Даны последовательности А. Последовательность хранится в файле. Количество элементов в последовательности неизвестно. Для обработки последовательностей описать методы: сортировки простыми включениями, создания последовательности, в которую входят только те элементы последовательности, которые стоят между максимальным и минимальным элементами неупорядоченной последовательности, ввода и вывода всех последовательностей. Вывод результирующей последовательности сопровождать выводом номеров элементов в исходной последовательностях. Сортировку сравнить по скорости с методом пузырька.

2.2.9. Разработать объект-вектор. В файле хранятся сведения о жителях некоторой улицы: фамилия, адрес, год рождения. Все сведения записываются в памяти в виде последовательности. Вводится некоторая текущая дата. В последовательности найти всех жителей, имеющих право участвовать в выборах(возраст >=18). Упорядочить последовательность методом простого выбора по фамилиям жителей. Полученные последовательности вывести на экран.

2.2.10. Разработать объект-вектор. В файле хранятся сведения об абонентах телефонной сети: фамилия, адрес, номер телефона. Записать все сведения в памяти в виде последовательности. Все записи в файле не упорядочены. Упорядочить сведения по фамилиям абонентов методом быстрой сортировки. Удалить из сведений убывшего абонента, внести в последовательность данные о новом абоненте, изменить данные об абоненте. Вывести все сведения на экран.

2.2.11. Разработать объект-вектор. Данные о фондах библиотеки хранятся в файле: автор книги, название книги, шифр издания(тоже строка), год издания, количество книг данного названия. Из всех сведений создать последовательность из книг одного автора. Упорядочить последовательность по фамилиям авторов методом простого включения. Обеспечить внесение в полученную последовательность новых сведений. Вывод на экран всех результатов обработки обязателен.

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

2.2.13. Имеется N населенных пунктов. Все пункты пронумерованы и имеют свои наименования. Некоторые из пунктов соединены попарно дорогами. Определить можно ли попасть по этим дорогам из любого K-ого пункта в пункт M. Информация о дорогах задается в виде последовательности пар чисел i и j, указывающих номера соединенных дорогами пары пунктов i и j. Если пункты не соединены, тогда в паре i и j номера равны 0. Признак конца последовательности, - это пара нулей в разделе признаков соединения. Разработать объект, обеспечивающий формирование исходной последовательности, сохранение всех сведений в файле, обработка сведений о возможных траекториях движения, вывод последовательностей полученных траекторий движения по возможным дорогам. Обработка последовательности по всем заданиям обеспечивается через текстовое меню.

2.2.14. Дана действительная матрица размерности M x N. С помощью алгоритма сортировки выбором обеспечить выполнение методов обработки строк матрицы: упорядочить строки матрицы по неубыванию значений первых элементов каждой строки, по невозрастанию сумм элементов строк, по возрастанию значений наименьших элементов строк, по убыванию значений наибольших элементов строк, создание и сохранение исходной матрицы в файле, вывод всех вариантов преобразования. Объект, содержащий все названные методы обработки последовательностей строк, должен работать под управлением текстового меню.

2.2.15. В файлах создаются две последовательности A и B. Последовательности произвольные из действительных чисел. Выполнить сортировки последовательностей алгоритмом деления пополам: взять сначала 1 и n+1 в качестве границ места очередного элемента X последовательности, Далее сдвигать эти границы следующим образом: 1 и K -ый номер выбираются, где K равно целой части суммы индексов границ последовательности, если Ak < X. В качестве нижней границы берется K, а верхняя граница не меняется. При противоположном соотношении сортируемых чисел без изменеения остается нижняя граница. Когда границы совпадут, тогда сортировка завершается. Получить последовательность натуральных чисел K1,... Km., где Ki - это номер места элемента последовательности B при слиянии этой последовательности с упорядоченной последовательностью A без нарушения признака упорядоченности. Методы объекта должны также обеспечить вывод всех вариантов последовательностей и выполнение всех пунктов задания через текстовое меню.

2.2.16. Разработать объект для обработки результатов некоторой лотереи. В качестве первого из результатов розыгрыша лотереи имеется последовательность выигравших шестизначных номеров билетов. Для каждого из выигравших билетов есть последовательность сумм выигрышей. Количество выигрышей M. Выигрыши - это последовательность P1,.....,Pm, где Pi - это выигрыш i-ого билета. Определить суммарный выигрыш, выпавший на любые k билетов из массива выигравших билетов. Обеспечить сохранение данных розыгрышей в файлах и вывод сведений на экран. Обработка всех сведений по розыгрышу выполняется через меню.

2.2.17. В файле задать произвольную последовательность целых чисел. Создать упорядоченную последовательность из неповторяющихся чисел исходной последовательности. Элементы, которые уже попали в результирующую последовательность не надо пытаться вставить еще раз в последовательность. Определить количество сравнений, необходимых для решения этой задачи алгоритмом быстрой сортировки. Обеспечить в методах объекта вывод исходной последовательности, преобразованной последовательности и тех элементов, которые были исключены из последовательности в результате преобразования. Все преобразования выполнять через текстовое меню.

2.2.18. Создать файл из слов различной длины. Считаем, что слова не имеют более 8 букв в длину. Между словами может быть произвольное число пробелов. Разработать объект, в котором последовательность слов упорядочивается следующим образом: сначала по алфавиту однобуквенные слова, затем двухбуквенные и т.д. В каждой последовательности одинаковые слова записывать по одному разу. Обеспечить вывод всех видов последовательностей, а также тех слов, которые не вошли в результирующую последовательность. Обработку последовательностей выполнять через меню.

2.2.19. Дана последовательность несовпадающих между собой натуральных чисел. Длина последовательности не более 100. Элементы Xi и Xj последовательности считаются взаимосвязанными, если значение элемента Xi=j. Последовательность связанных элементов образует цепь. Описать методы объекта для определения цепей в последовательности элементов, создание последовательностей типа цепи, определение суммы элементов в каждой из цепей, минимальную и максимальные длины цепей. Все исходные данные должны быть записаны в файл. Обработка последовательности выполняется через меню.

ПРИМЕР 2.2

Program Number_2_2; {текст основной программы}

uses crt,prg8;

var t:TPerson;

Begin

t.run;

End.

Unit Prg8;{ текст модуля, содержащего все

объявления объекта -последовательности}

Interface

uses Crt;

{Создать последовательность из некоторых сведений о жителях некоторого района. Данные представлены в формате: фамилия, возраст. Отсортировать последовательность по возрасту методом простых включений. Синтаксически решение задачи оформить через структуру объект- последовательность. Эту структуру можно рассматривать, как объект- персона.}

Type

Telement = record { Структура- запись }

Title: string[20]; { Фамилия }

age: integer; { Номер по порядку }

end;

pVec=^Vector;

Vector=array[0..0] of Telement;

TPerson=object

pV:pVec;

n,nm:integer;

constructor Init(a:integer);

destructor Done;

procedure Insert; {Вставить элементы

в последовательность}

procedure Show; {Вывести на экран последовательность в заданной форме}

procedure Sort; {Сортировка последовательности

методом простого включения по возрасту}

procedure Run; {выполнить заранее определенную

последовательность действий}

end;

ff=file of Telement;{}

Implementation

constructor TPerson.init(a:integer);

Begin

Getmem(pv,a*sizeof(Telement));

{Выделение памяти для динамического вектора}

nm:=a;

end;

destructor TPerson.Done;

Begin

Freemem(pv,nm*sizeof(Telement));

{Освобождение динамической памяти}

end;

procedure Tperson.Insert;

Var

i:integer;

Begin

for i:=1 to nm do

Begin

write('Введите фамилию ');

readln(pv^[i].Title);

write('Введите возраст ');

readln(pv^[i].age);

end;

end;

procedure TPerson.Show;

Var

i:integer;

Begin

for i:=1 to nm do

Begin

writeln(pv^[i].Title:20,' ',pv^[i].age:5);

end;

end;

procedure TPerson.Sort;

Var

i,j:integer;

temp: Telement;

Begin

for i:=2 to nm do

Begin

temp:=pV^[i];

pV^[0]:=temp;

j:=i-1;

while temp.age<pv^[j].age do

Begin

pv^[j+1]:=pv^[j];

j:=j-1;

end;

pv^[j+1]:=temp;

end;

end;

procedure TPerson.run;

var m:integer;

Begin

write('Введите количество сведений ');

readln(m);

init(m);

insert;

show;

readln;

sort;

show; readln;

done;

end;

Begin

End.




Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 147; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.198.113 (0.007 с.)