- •Лабораторная работа №1 Структура программы на языке Pascal и организация ввода-вывода данных
- •Var Form1: tForm1;
- •Var z: integer;
- •Лабораторная работа № 2
- •Var X,a,y:real;
- •Лабораторная работа № 3 Проект с несколькими формами
- •Form1 (Unit1)
- •Var Form1: tForm1; X,y,s,r,p:real;
- •Implementation
- •Form2 (Unit2)
- •Implementation
- •Лабораторная работа №4
- •Var X ,I: integer;
- •Inc (I);{следующий номер делителя}
- •Var m,n,nod,nok:word; I,k:word;
- •Лабораторная работа №5
- •Var I,p:integer;
- •Var a:array[size]of integer;
- •I,n,imax:size;
- •Var I:size;
- •Var n:integer;//количество строк в поле Memo1
- •Var I,p:integer;
- •Var a:array[size,size]of integer; m,n:size; max:integer;
- •Imax,jmax: size; I,j,k: integer;
- •Лабораторная работа №6
- •Var Str:string; otvet, I, n: integer;
- •Лабораторная работа №7
- •Var f: textfile; I: integer;
- •Var f: textfile; ch:string; I,s: integer;
- •Vozr,rost:integer;
- •Var st,r:string; rzap:sz; I:integer; f1:TextFile;
- •Лабораторная работа №8
- •Interface
- •Лабораторная работа №9
- •Var I,j,k:integer;
- •Var I,j:integer;
- •Var b:vec; n1,I,j,k:integer;
- •Приложение 1
- •Приложение 2
Var a:array[size]of integer;
I,n,imax:size;
max:integer;
begin
n:=StrToInt(Edit1.text);
for i:=1 to n do a[i]:=StrToInt(GetSubStr(Edit2.text,i));
max:=a[1]; imax:=1;
for i:=1 to n do
if a[i] > max then begin max:=a[i];imax:=i end;
Label5.Caption:='max='+IntToStr(max);
Label6.Caption:='indexmax='+IntToStr(imax);
end;
Сценарий выполнения программы:
Запустить программу (Run).
Ввести в поле Edit1 значение количества элементов массива, не превышающее 21.
В поле Edit2 ввести элементы массива, разделяя их пробелом.
Нажать кнопку “Расчет”.
Просмотреть результаты (ниже приведен пример).
Для завершения работы нажать кнопку “Выход”.
Пример 5.2 Решение задачи примера 5.1 с использованием ввода элементов массива из строк компонента Memo
Вид формы:
Описание компонентов, размещенных на форме:
-
Компоненты
Свойство
Значение
Form1
Label1
Label2
Label3
Label4
Label5
Button1
Button2
Edit1
Memo1
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Text
Lines
Поиск максимального элемента
Количество вводимых элементов
m=
max=
indexmax=
Ввод
Поиск
Выход
пусто
пусто
Используя страницу Standart палитры компонент, поместите в правой части формы компонент Memo (текстовый редактор), измените его параметры, выберите в окне Инспектора Объектов объект Memo1, затем на странице Свойства произведите двойной щелчок на поле значения Strings свойства Lines для формирования и редактирования текста. После этого в окне String List Editor удалите текст Memo1, введите текст в 0-й строке “Вводите массив” и щелкните мышью на кнопке ОК.
Ввод элементов массива и поиск в массиве максимального элемента и его индекса осуществляется в разных процедурах, поэтому описание массива и переменной “m” нужно выполнить в разделе Interface модуля Unit1:
const mm=20;//максимальный размер массива
type size=1..mm;
var
Form1: TForm1;
a:array[size]of integer;
m:size;
Процедура обработки щелчка на кнопке “Ввод”
procedure TForm1.Button1Click(Sender: TObject);
Var I:size;
begin
m:=StrToInt(Edit1.text);
for i:=1 to m do a[i]:=StrToInt(Form1.Memo1.Lines[i])
end;
Процедура обработки щелчка на кнопке “Поиск”
procedure TForm1.Button2Click(Sender: TObject);
Var n:integer;//количество строк в поле Memo1
max:integer; i,imax:size;
st:string;//строка для сообщения
begin n:=Form1.Memo1.Lines.Count;
//подсчет кол-ва строк в Memo1
if n=0 then ShowMessage('исходные данные не введены');
if n > m then begin // в поле Memo1 есть текст
ShowMessage('количество введенных строк'+
#13'превышает размер массива.');
n:=m;//будем вводить "m" строк end ;
{ В поле Memo строки пронумерованы с нуля }
{ Вывод введенного массива в окно сообщения }
if n > 0 then
begin st:='Введенный массив'+#13;
for i:=1 to n do
st:=st+IntToStr(i)+' '+IntToStr(a[i])+#13;
ShowMessage(st)
end;
max:=a[1]; imax:=1;
for i:=1 to n do
if a[i]>max then begin max:=a[i]; imax:=i end;
Label4.Caption:='max='+IntToStr(max);
Label5.Caption:='indexmax='+IntToStr(imax);end;
Сценарий выполнения программы:
Запустить программу (Run).
Вести в поле Edit1 значение n - количество элементов массива(n
).В поле Memo1, начиная со строки с номером 1, ввести элементы массива(по одному числу в строке).
Нажать кнопку “Ввод”.
Нажать кнопку “Поиск”. Появится окно с сообщением “Количество введенных строк превышает размер массива”(Первая строка ее номер нулевой , содержит текст “Вводите массив”). Нажать кнопку “ОК”. Появится окно с сообщением “Введенный массив” и после него сами элементы.
Просмотреть их и нажать “ОК”.
Проанализировать результаты.
Для завершения работы нажать кнопку “Выход”.
Пример 5.3 Создание приложения с вводом двумерного массива в поле Edit и выводом его в таблицу StringGrid
Постановка задачи: в двумерном массиве A(m*n) определить максимальный элемент и его место расположение.
Компонент StringGrid страницы Additional предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. Таблица делится на две части: фиксированную и рабочую. Фиксированная служит для показа заголовков столбцов/рядов и для ручного управления их размерами. Центральным свойством компонента является Cells - двумерный массив ячеек. Конкретная ячейка определяется парой чисел – номером столбца и номером ряда, на пересечении которых она находится(нумерация начинается с нуля). Например, Cells[2,3]. Здесь первый индекс 2 – это номер 3-го столбца, а второй индекс 3 – номер 4-го ряда (4-ой строки). Будьте внимательны при выводе в таблицу матрицы по строкам.
Вид формы с компонентами:
Размещенные компоненты:
Компоненты |
Свойство |
Значение |
Пояснение |
Label(1,10)
Button1 Button2 Edit1 Edit2 Edit3 StringGrid1 |
Caption
Caption Caption Text Text Text ColCount RowCount FixedCols FixedRow
s |
Текст на форме Расчет Выход Пусто Пусто Пусто 7 7 1 1 |
Количество строк матрицы Количество столбцов Матрица по строкам Количество столбцов таблицы Количество строк таблицы Количество фиксированных столбцов и строк для надписей номеров |
Процедура обработки щелчка на кнопке “Расчет”
(Перед процедурой разместить функцию выделения
подстроки из строки GetSubSrt)
function GetSubStr(st:string;n:integer):string;
