Лекции Практические и лабораторные занятия Курсовая работа (проект) Самостоятельная работа студента




Скачать 1.86 Mb.
страница 4/7
Дата 11.10.2016
Размер 1.86 Mb.
1   2   3   4   5   6   7

Options.AlwaysShowEditing=true


Options.goTabs=true

Значения свойств Height и Width следует при помощи мыши установить такими, чтобы размер компонента был равен размеру строки.

Приложение должно иметь следующий вид:


Label1



StringGrid



Label2



Label3



Button3

Button2

Button1

Процедура обработки события OnClick (клавиша Вычислить) представлена ниже:



procedure TForm1.Button1Click(Sender: TObject);

var a:array[1..10] of integer;

sum,i:integer;

sr:real; s:string;

begin s:='';

for i:=1 to 10 do


ввод массива
begin

if length(StringGrid1.Cells[i-1,0])0

then a[i]:=StrToInt(StringGrid1.Cells[i-1,0])

else a[i]:=0;


вывод массива
s:=s+StringGrid1.Cells[i-1,0]+' ';

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



end;


обработка массива
sum:=0;

for i:=1 to 10 do sum:=sum+a[i];

sr:=sum/10;




вывод результата
Label3.Caption:='сумма элементов:'+IntToStr(sum)+

#13+'Среднее арифметическое:'+FloatToStr(sr)



end;

Текст процедуры обработки события OnKeyPress приведен ниже. Процедура осуществляет контроль вводимых данных, разрешая вводить в ячейку таблицы только цифры. Следует обратить внимание на свойство Col, которое во время работы программы содержит номер колонки таблицы, в которой находится курсор. Это свойство можно также использовать для перемещения курсора в нужную ячейку таблицы при нажатии клавишиEnter>. Однако нужно учитывать, что колонки и строки таблицы нумеруются с нуля.



Procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

case key of

#8,'0'..'9':;

#13: if StringGrid1.Col

then StringGrid1.Col:=StringGrid1.Col+1;

else key:=Chr(0);

end;

end;

При нажатии клавиши Сброс происходит очистка полей ввода:



procedure TForm1.Button2Click(Sender: TObject);

var i:integer;

begin

For i:=1 to 10 do StringGrid1.Cells[i-1,0]:='';

Label2.Caption:=’ ‘;

Label3.Caption:=’ ‘;

end;

При нажатии клавиши Выход происходит закрытие приложения:



procedure TForm1.Button3Click(Sender: TObject);

begin

form1.Close



end;

Использование компонента Memo.

В некоторых случаях для ввода массива можно использовать компонент Memo. Компонент Memo позволяет вводить текст, состоящий из достаточно большого количества строк, поэтому его удобно использовать для ввода символьного массива. Компонент Memo добавляется в форму обычным образом. Значок компонента находится на вкладке Standart (Стандартная).

Свойство Lines определяет массив, каждый элемент которого содержит одну строку находящегося в поле Memo текста, а свойство Lines.Count определяет количество строк текста в поле Memo.

При использовании компонента Memo для ввода массива значение каждого элемента массива следует вводить в отдельной строке и после ввода каждого элемента массива нажимать клавишу Enter>. Для того, чтобы курсор был виден в поле ввода компоненты Memo, надо установить у свойства OnRead значение False, а у свойства Enabled значение True.

Получить доступ к находящейся в поле Memo строке текста можно при помощи свойства Lines, указав в квадратных скобках номер нужной строки (строки нумеруются с нуля).

Основной цикл процедуры ввода символьного массива из компонента Memo может выглядеть так:



for i:=1 to 10 do a[i]:=Memo1.Lines[i-1];

Для ввода числового массива надо использовать функции преобразования StrToInt или StrToFloat:



for i:=1 to 10 do a[i]:=StrToInt(Form1.Memo1.Lines[i-1]);

for i:=1 to 10 do a[i]:=StrToFloat(Form1.Memo1.Lines[i-1]);

Приложение должно иметь следующий вид:








Label1



Окно

ShowMessage



Memo1



Batton3

Batton2

Batton1

Процедура обработки события OnClick (клавиша Вычислить) представлена ниже:



procedure TForm1.Button1Click(Sender: TObject);

var a:array[1..10] of integer;

sum,i,n:integer;

sr:real; s:string;

begin

s:='';


n:=Memo1.Lines.Count;

if n=0 then

begin ShowMessage('Исходные данные не введены!');

Exit;


end;

if n>10 then

begin ShowMessage('Количество строк превышает размер массива.');

n:=10;


end;

for i:=1 to n do

begin

a[i]:=StrToInt(Form1.Memo1.Lines[i-1]);

s:=s+Form1.Memo1.Lines[i-1]+#13;

end;

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

sum:=0;

for i:=1 to n do sum:=sum+a[i];

sr:=sum/n;

s:=s+'сумма элементов:'+IntToStr(sum)+

#13+'Среднее арифметическое:'+FloatToStr(sr);

ShowMessage(s);

end;

Процедура TForm1.Button1Click сначала проверяет, есть ли в поле Memo1 текст. Если текст есть (в этом случае значение свойства Lines.Count больше нуля), то процедура сравнивает количество введенных строк и размер массива. Если это количество превышает размер массива, то программа выдает сообщение об этом и изменяет значение n, тем самым подготавливает ввод только первых 10 строк. Если текста нет, т.е. n=0, то выдается сообщение об ошибке и программа завершает свою работу.

Веденный массив и результаты работы программы выдаются в отдельное окно функцией ShowMassage.

Текст процедуры обработки события OnKeyPress приведен ниже. Процедура осуществляет контроль вводимых данных, разрешая вводить в ячейку таблицы только цифры.



procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);

begin Case key of

'0'..'9',#8,#13:;



else key:=chr(0);

end;

end;

При нажатии клавиши Сброс происходит очистка полей ввода при помощи события Clear:



procedure TForm1.Button2Click(Sender: TObject);

begin

Memo1.Clear;



end;

При нажатии клавиши Выход происходит закрытие приложения:



procedure TForm1.Button3Click(Sender: TObject);

begin

Form1.Close;



end;

Задание:

  1. Напишите программу поиска трех последовательных элементов, сумма которых максимальна, в числовом массиве из 30 элементов.

  2. Дан целочисленный массив из 30 элементов. Элементы могут принимать значения от 0 до 100 – баллы, полученные на ЕНТ. Напишите программу, которая подсчитывает и выводит средний балл учащихся, сдавших экзамен (получивших оценку более 20 баллов). Гарантируется, что хотя бы один ученик в классе успешно сдал экзамен.

Лабораторная работа №7

Тема: Поиск элементов массива. Сортировка массивов.

Цель: Сформировать практические навыки: реализация процессов обработки одномерных и двумерных массивов; построение однооконных интерфейсов с помощью визуального компонента «окно» (класс TForm) и визуальных компонентов панели инструментов Standard: «метка» (класс TLabel), «редактор» (класс TEdit), «кнопка» (класс TButton), (класс TStringGrid).
1   2   3   4   5   6   7


База данных защищена авторским правом ©infoeto.ru 2022
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница