Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmir_na_Object_Pascal_lab_raboty_.doc
Скачиваний:
208
Добавлен:
11.03.2016
Размер:
14.48 Mб
Скачать

4.6. Компонент tEdit для ввода одномерных массивов

В Delphi ввод одномерных массивов, кроме использования компонента TStringGrid , можно еще организовать и с использованием компонента TEdit. Зачастую это бывает проще, т.к. не надо дополнительно задавать размерность массива - она получается из подсчета слов в строке TEdit. Алгоритм ввода одномерного массива из строки TEdit состоит в разделении этой строки на отдельные слова, каждое из которых и есть компонент массива. Слова в строке друг от друга отделяются некоторыми разделителями, например, одним или несколькими пробелами - это и позволяет выделить из строки отдельные слова.

Заметим, что компонент TEdit удобно использовать для ввода только одномерного массива, для ввода двумерного массива он менее удобен, и в этом случае больше подходит TStringGrid.

4.7. Пример написания программы с использованием tEdit

Задание: Одномерный массив целых чисел A размерности n вводится из строки TEdit. Найти количество четных положительных элементов массива, и произведение отрицательных элементов.

Интерфейс программы приведен на рис. 4.2, а на листинге 4.2 - фрагмент программы (только обработчик TForm1.Button1Click() по аналогии с примером 4.5)

Рис. 4.2. Интерфейс программы

Листинг 4.2

//---------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);

//нажатие кнопки Вычислить

var

pe, k : integer;

s, s1 : string;

A:array [1..100] of integer;

begin

{Ввод массива из строки Edit1}

s := Edit1.Text; //получаем строку из Edit1

s := Trim(s); //удаляем пробелы из строки s слева и справа

while Pos( ' ', s ) > 0 do //оставляем по одному пробелу между словами

Delete( s, Pos( ' ', s ), 1 );

s := s+' '; //искусственно добавляем один пробел в конец строки

n := 0; //готовим счетчик слов

s1 := ''; //готовим вспомогательную строку для слова

for i := 1 to Length(s) do

if s[i] = ' ' then begin //если нашли очередное слово, то ...

n := n+1; //увеличиваем счетчик слов

A[n] := StrToInt(s1); //преобразуем найденное слово в элемент массива

s1 := ''; //очищаем вспомогательную строку - готовим для след.слова

end

else s1 := s1+s[i]; //иначе продолжаем накапливать символы слова

//показываем введенный массив в Мемо

s:='Введенный массив :'+#13#10;

s:=s+'Индекс'+#9+'Значение'+#13#10;

for i:=1 to n do

s := s+IntToStr(i)+' :'+#9+InTtoStr(A[i])+#13#10;

Memo1.Text := s;

{расчет}

k := 0;

pe := 1;

for i := 1 to n do

if (A[i] > 0) and (not odd(A[i])) then k := k + 1

else if (A[i] < 0) then pe := pe * A[i];

{ Вывод результата}

Memo1.Lines.Add('Количество четных положительных элементов: ' + IntToStr(k));

Memo1.Lines.Add('Произведение отрицательных элементов: ' + IntToStr(pe));

end;

//---------------------------------------------------

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]