Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка схемы интерфейса.Содержание книги Поиск на нашем сайте
Создадим для нашего модуля форму (рис.3.1). На нее добавим: 1. Поле Memo – для вывода содержимого файла, и для возможности последующего изменения исходных данных. 2. Opendialog – для открытия файла. 3. Savedialog – для сохранения результатов. 4. 2 Метки (label) – на первой выведем результат выполнения задания 1.а, а на второй – 1.б. 5. 3 Кнопки (button) – в событие onClick первой мы запишем процедуру “TForm1.open”, для второй - “TForm1.save” и для третьей - “TForm1.button3click”
Рис.3.1 Форма на этапе разработки. 3.4. Листинг кода программы.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Memo1: TMemo; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Button1: TButton; Label1: TLabel; Label2: TLabel; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Memo1Change(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; n:integer; p,sum:real; implementation
{$R *.dfm} procedure Schet; var i,imax,imin,max,min:integer; a:array[1..100] of integer; begin n:=strToInt(form1.memo1.Lines[0]); // размер массива for i:=1 to n do a[i]:=strToInt(form1.memo1.Lines[i]); // берем данные из файла в массив sum:=0; // Задание 1-А: ищем сумму отрицательных элементов массива for i:=1 to n do if a[i]<0 then sum:=sum+a[i]; form1.label1.Visible:=true; form1.label1.Caption:= 'Сумма отрицательных элементов массива = '+Floattostr(sum)+'.'; imax:=1; // Задание 1-B: ищем произведение элементов массива, расположенных между его максимальным и минимальным элементами imin:=1; max:=a[1]; min:=a[1]; for i:=2 to n do begin if a[i]>max then begin max:=a[i]; imax:=i; end; if a[i]<min then begin min:=a[i]; imin:=i; end; end; if imin>imax then begin i:=imin; imin:=imax; imax:=i; end; p:=1; for i:=imin to imax do p:=p*a[i]; form1.label2.Visible:=true; form1.label2.Caption:= 'Произведение элементов массива, расположенных между его максимальным и минимальным элементами, = '+Floattostr(p)+'.'; end;
procedure TForm1.Button1Click(Sender: TObject); begin if opendialog1.Execute then memo1.Lines.LoadFromFile(opendialog1.FileName); Schet; end;
procedure TForm1.Memo1Change(Sender: TObject); begin Schet; end;
procedure TForm1.Button2Click(Sender: TObject); begin memo1.Lines[n+1]:= 'Сумма отрицательных элементов массива = '+Floattostr(sum)+'.'; memo1.Lines[n+2]:= 'Произведение элементов массива, расположенных между его максимальным и минимальным элементами, = '+Floattostr(p)+'.'; if savedialog1.Execute then memo1.Lines.SaveToFile(savedialog1.FileName); end; end.
3.5. Постановка задачи 2. Дана целочисленная прямоугольная матрица. Определить количество строк, не содержащих ни одного нулевого элемента. 3.6. Анализ задачи составление блок-схем. Для решения поставленной задачи нам потребуется поля для ввода размерности матрицы, две табличные области (например, StringGrid), куда бы мы записали элементы матрицы и результат вычислений, и процедура, которая бы с помощью определенных циклов и условий выполняла необходимые вычисления. Все это можно реализовать с помощью модуля. Блок-схемы основной программы и необходимых процедур представлены ниже.
3.7. Разработка схемы интерфейса. Создадим для нашего модуля форму (рис.3.2). На нее добавим: 1. Три метки (label) – на первой напишем «число строк», а на второй – «число столбцов», на третьей – «сумма элементов в столбцах, не содержащих отрицательные элементы». 2. Два поля для ввода (Edit) – первый для ввода строк, второго – столбцов. В события Onchange для первого запишем процедуру «TForm1.Edit1Change», для второго – «TForm1.Edit2Change». Также в события onKeyPress запишем процедуры «edit1KeyPress» и «edit2KeyPress», для первого и второго полей соответственно, так как здесь нам нужны только цифры. 3. Две табличные области (Stringgrid) – в первую запишем исходную матрицу, а вторую – результаты расчетов. В событие onKeyPress для первой запишем процедуру «StringGrid1KeyPress», так как нам нужны только цифры. 4. Одну кнопку, в событие OnClick которой запишем процедуру «Schet».
Рис.3.2 Форма на этапе разработки. 3.8. Листинг кода программы
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;
type TForm1 = class(TForm) StringGrid1: TStringGrid; Label1: TLabel; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; StringGrid2: TStringGrid; Button1: TButton; Label3: TLabel; procedure Edit1Change(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit2KeyPress(Sender: TObject; var Key: Char); procedure StringGrid1KeyPress(Sender: TObject; var Key: Char); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; m,n:integer; a:array[1..20,1..20] of integer; b:array[1..20] of integer; implementation
{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject); var i:integer; begin m:=strToInt(edit1.Text); StringGrid1.RowCount:=m; StringGrid1.Height:=24*m+15; StringGrid1.Visible:=true; StringGrid2.Top:=StringGrid1.Top+24*m+25; for i:=0 to m-1 do StringGrid1.Cells[0,i]:='0'; end;
procedure TForm1.Edit2Change(Sender: TObject); var i,j:integer; begin n:=strToInt(edit2.Text); StringGrid1.ColCount:=n; StringGrid2.ColCount:=n; StringGrid1.Width:=64*n+10; StringGrid2.Width:=StringGrid1.Width; StringGrid1.Visible:=true; for i:=0 to m-1 do for j:=0 to n-1 do StringGrid1.Cells[j,i]:='0'; end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',#8]) then key:=#0; end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',#8]) then key:=#0; end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',#8]) then key:=#0; end;
procedure TForm1.Button1Click(Sender: TObject); var i,j,k:integer; begin for i:=1 to m do for j:=1 to n do a[i,j]:=strToInT(stringgrid1.Cells[j-1,i-1]); for i:=1 to m do b[i]:=0; for j:=1 to n do for i:=1 to m do if a[i,j]=0 then b[i]:=1; k:=0; for i:=1 to n do begin if b[i]=0 then k:=k+1; stringgrid2.Cells[i-1,0]:=InTTostr(b[i]); end; label3.Caption:='Количество ненулевых строк - '+IntToStr(k)+'.'; end;
end.
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-02-07; просмотров: 167; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.009 с.) |