Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка схемы интерфейса.↑ ⇐ ПредыдущаяСтр 4 из 4 Содержание книги Поиск на нашем сайте
Создадим для нашего модуля форму (рис.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; просмотров: 117; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.119.34 (0.006 с.) |