Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
При использовании компонента Memo для ввода массива значение каждого элемента массива следует вводить в отдельной строке и после ввода каждого элемента массива нажимать клавишу «ENTER».
Получить доступ к находящейся в поле Memo строке текста можно при помощи свойства Lines, указав в квадратных скобках номер нужной строки (строки нумеруются с 0).
Следующий цикл демонстрирует ввод символьного массива из компонента Memo:
For i:=1 to Size do
a[i]:=Memo1.Lines[i];
Вывод массива в компонент Memo можно осуществить таким образом:
For i:=0 to N-1
Memo2.Lines.Add(FloatToStr(massiv[i+1]);
Практика
Задача
Составить программу для сортировки массива действительных чисел: по возрастанию или по убыванию по желанию пользователя. Результаты сортировки вывести в окно сообщения.
Компоненты
Имя компонента | Свойства компонента | Значение | Назначение |
Form1 | Caption | Сортировка массива методом прямого выбора | Заголовок формы |
Label1 | Caption | Программа предназначена для сортировки массива действительных чисел по возрастанию либо по убыванию | Справочная информация для пользователя программы |
Label2 | Caption | Количество элементов в массиве | Подсказка пользователю |
Edit1 | Text | ….. | Поле для ввода количества элементов в массиве |
Memo1 | Lines | ….. | Компонент для ввода элементов массива в столбик (в одной строке — один элемент) |
Button1 | Caption | Сортировка по возрастанию | Кнопка для выполнения сортировки по возрастанию |
Button2 | Caption | Сортировка по убыванию | Кнопка для выполнения сортировки по убыванию |
Button3 | Caption | Завершение работы | Кнопка для завершения работы программы |
Переменные и массивы
Обозначение в программе | Содержание | Тип |
N | Количество элементов в массиве действительных чисел | Целый |
Massiv | Массив действительных чисел | Вещественный, расширенный |
I | Текущий индекс элемента массива | Целый |
J | индекс элемента массива, с которого начинается поиск минимального либо максимального элемента | Целый |
min | номер минимального элемента в массиве или части массива | Целый |
max | номер максимального элемента в массиве или части массива | Целый |
buf | буфер для обмена местами элементов массива | Вещественный, расширенный |
st | строковое сообщение, содержащее результат | Строковый |
Проект формы
Текст модуля
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
…………
var
Form1: TForm1;
Massiv: array [1..100] of Extended;// массив действительных чисел
N: Integer;
implementation
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.Close
end;
procedure TForm1.Button1Click(Sender: TObject);
Var I:Integer;// индекс элемента массива
min: Integer; // номер минимального элемента в массиве
//или части массива
j: Integer; // индекс элемента массива,
//с которого начинается
// поиск минимального элемента
buf: Extended; // буфер для обмена местами
// элементов массива
St: String; // строковое сообщение, содержащее результат
begin
//ввод количества элементов в массиве
N:=StrToInt(Edit1.Text);
//ввод массива действительных чисел
For I:=1 To N do
Massiv[I]:=StrToFloat(Memo1.Lines[I-1]);
// поиск минимального элемента массива методом прямого выбора
{алгоритм метода прямого выбора можно описать следующими словами. Сначала в качестве минимального элемента берется первый элемент и с ним последовательно сравниваются все следующие элементы массива, если попадается элемент меньше принятого за минимальный, то они меняются местами. В результате на первом месте оказывается самый маленький элемент массива. Затем берется второй или следующий элемент массива и просматривается с перестановкой оставшаяся часть массива. Эта последовательность шагов повторяется, пока номер минимального элемента не достигнет N–1}
For I:=1 to N-1 do
begin
min:=I;
For j:=I+1 to N do
if Massiv[j] < Massiv[min]
then min:=j;
buf:=Massiv[I];
Massiv[I]:=Massiv[min];
Massiv[min]:=buf;
end;
// вывод результатов сортировки
st:='Отсортированный по возрастанию массив'+#13;
For I:=1 to N do
st:=st+IntToStr(i)+ ' '+FloatToStrF(Massiv[I],Fffixed,10,2)+#13;
ShowMessage(st);
end;
procedure TForm1.Button2Click(Sender: TObject);
Var I:Integer;// индекс элемента массива
max: Integer; // максимальный элемент в массиве
j: Integer; // индекс элемента массива, с которого
// начинается поиск максимального элемента
buf: Extended; // буфер для обмена местами элементов
// массива
St:String;// строковое сообщение, содержащее результат
begin
// ввод количества элементов в массиве
N:=StrToInt(Edit1.Text);
// ввод массива действительных чисел
For I:=1 To N do
Massiv[I]:=StrToFloat(Memo1.Lines[I-1]);
// поиск максимального элемента массива методом прямого выбора
// алгоритм аналогичен поиску минимального элемента
// отличие состоит в знаке сравнения
For I:=1 to N-1 do
begin
max:=I;
For j:=I+1 to N do
if Massiv[j] > Massiv[max] then max:=j;
buf:=Massiv[I];
Massiv[I]:=Massiv[max];
Massiv[max]:=buf;
end;
// вывод результатов сортировки
st:='Отсортированный по убыванию массив'+#13;
For I:=1 to N do
st:=st+IntToStr(i)+ ' '+FloatToStrF(Massiv[I],Fffixed,10,2)+#13;
ShowMessage(st);
end;
end.
Дата публикования: 2014-11-02; Прочитано: 1060 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!