![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
k:= k+1; // Збільшення на 1 значення лічильника кількості елементів масиву b
SetLength (b, k); // Встановлення нового розміру (кількості елементів) динамічного масиву b
b[k-1]:= a[i]; // Занесення відповідного елемента масиву a до масиву b
End;
Memo2.Lines.Clear;
if k = 0
then Memo2.Lines[0]:= 'Таких чисел не існує'
Else
for i:= 1 to k do
Memo2.Lines.Append(FloatToStr(b[i-1]));
End;
SetLength (англ. set – встановлювати, length – довжина).
Використовуючи динамічні масиви, можна створювати програми для довільної кількості чисел, уведених у рядки багаторядкового поля. У таких випадках потрібно ввести дані з цього багаторядкового поля в динамічний масив a, наприклад, так:
k:= Memo1.Lines.Count; //Визначається кількість заповнених рядків поля
SetLength (a, k); // Встановлюється відповідна кількість елементів динамічного масиву a і виділяється для його елементів відповідна ділянка пам’яті
For i:= 0 to k-1 do a[i]:= StrToFloat(Memo1.Lines[i]); // Уведення даних з рядків поля до масиву
Далі дані з динамічного масиву можна опрацьовувати різноманітними методами.
Сортування одновимірного масиву і пошук даного числа у впорядкованому масиві
Багато програм на опрацювання значень елементів одновимірного працюватимуть значно швидше, якщо значення його елементів будуть упорядковані за зростанням або за спаданням. Це стосується перш за все задач пошуку потрібних значень серед значень елемента масиву.
Існує більше 10 різноманітних методів сортування одновимірного масиву. Одні з них виконуються швидше, інші повільніше, одні – більш складні за своєю логічною структурою, інші – простіші. Ми розглянемо один з методів сортування одновимірного масиву – метод вибору.
Пояснимо сутність цього методу на прикладі. Нехай нам потрібно впорядкувати за зростанням такий одновимірний масив з 6 елементів (табл. 2.5, рядок 0):
Таблиця 2.5. Упорядкування масиву методом вибору
№ | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] |
На першому кроці визначимо значення найменшого елемента в усьому масиві (a[4] = 2) і обміняємо його зі значенням першого елемента. Одержуємо масив у рядку 1, в якому найменший елемент зайняв своє місце. На другому кроці визначимо значення найменшого елемента серед усіх елементів масиву, крім першого, (a[6] = 4) і обміняємо його зі значенням другого елемента. Одержуємо масив у рядку 2, в якому перші 2 елементи зайняли своє місце. На третьому кроці визначимо значення найменшого елемента серед усіх елементів масиву, крім перших двох, (a[5] = 6) і обміняємо його зі значенням третього елемента. Одержуємо масив у рядку 3, в якому перші 3 елементи зайняли своє місце. Повторивши аналогічні дії ще 2 рази разів, одержуємо масив, впорядкований за зростанням.
Звертаємо вашу увагу: хоча масив має 6 елементів, достатньо 5 разів знайти найменше значення елементів з ще не впорядкованої частини масиву і обміняти його місцями із значенням першого з ще не впорядкованої частини масиву елемента. На останньому кроці не лише 5-й, а й 6-й елемент масиву займає своє місце у впорядкованій частині масиву, і таким чином увесь масив стає впорядкованим.
З пояснень суті цього методу з’ясовується смисл його назви: адже на кожному кроці вибирається найменший елемент серед ще невпорядкованої частини масиву, і його значення обмінюється зі значенням елемента, першого серед ще невпорядкованої частини масиву.
Відповідна процедура, в якій реалізується цей метод, виглядає так:
procedure TForm1.Button2Click(Sender: TObject);
var a: array [1..10] of integer; i, j, min, nmin: integer;
Begin
for i:= 1 to 10 do
a[i]:= StrToInt(Memo1.Lines[i-1]);
for i:= 1 to 9 do
Begin
min:= a[i]; nmin:= i;
for j:= i+1 to 10 do
if a[j] < min Then
Begin
min:= a[j]; nmin:= j;
End;
a[nmin]:= a[i];
a[i]:= min;
End;
Дата публикования: 2014-11-04; Прочитано: 517 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!