Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Компонент Memo для ввода и вывода массивов



При использовании компонента 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...