Программирование на Object Pascal в среде Delphi . Практическое задание. Информационное обеспечение, программирование.
💣 👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻
Информационное обеспечение, программирование
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!
Похожие работы на - Программирование на Object Pascal в среде Delphi
Скачать Скачать документ
Информация о работе Информация о работе
Скачать Скачать документ
Информация о работе Информация о работе
Скачать Скачать документ
Информация о работе Информация о работе
Скачать Скачать документ
Информация о работе Информация о работе
Скачать Скачать документ
Информация о работе Информация о работе
Нужна качественная работа без плагиата?
Не нашел материал для своей работы?
Поможем написать качественную работу Без плагиата!
Цель лабораторной работы: освоить методику создания приложений, в
которых используются динамические структуры данных.
Задание :
создать приложение для вычисления наименьшего и наибольшего из
всех значений элементов целочисленной матрицы A ={a ij } , где i =1,2,…, m; j=1,2,…, n . Значения m и n задаются
пользователем на панели интерфейса, а элементы матрицы A генерируются с помощью датчика случайных чисел и размещаются в памяти
динамически.
Один из возможных вариантов панели интерфейса создаваемого
приложения показан на рис.9.1.
9. 1.1. Размещение компонентов на Форме
Разместим на Форме компоненты Label, SpinEdit, Button и StringGrid.
Сохраним модуль под именем UnDinMas (текст модуля приведен в п.9.1.3).
Двойным нажатием клавиши “мыши”
на Форме и кнопке Button1 создайте соответствующие процедуры
обработки событий. Пользуясь текстом модуля UnDinMas, внимательно наберите
операторы этих процедур.
При желании
можно создать процедуру, которая будет выделять заданным цветом границы ячеек с
наименьшим и наибольшим значениями в компоненте StringGrid. Для создания такой процедуры
сделайте активным компонент StringGrid и на странице Events(события) Инспектора Объектов
дважды щелкните “мышью” в правой части события OnDrawCell. В ответ Delphi создаст
обработчик этого события – процедуру procedure TForm1.StringGrid1DrawCell
и установит курсор между операторами begin и end этой процедуры. Используя текст модуля
UnDinMas, внимательно наберите операторы процедуры
TForm1.StringGrid1DrawCell.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
procedure Button1Click(Sender: TObject);
Mas= array [1..1]
of integer; // массив целочисленных значений
pMas= array [1..1]
of ^mas; // массив указателей
var // объявление
глобальных переменных
pA:^pMas;
// указатель на массив указателей
procedure TForm1.FormCreate(Sender: TObject);
m:=6;
// начальное значение m
n:=8;
// начальное значение n
StringGrid1.RowCount:=m;
// количество строк
StringGrid1.ColCount:=n;
// количество столбцов
procedure TForm1.SpinEdit1Change(Sender: TObject);
m:=StrToInt(SpinEdit1.Text);//
m присваивается содержимое поля редактора
procedure TForm1.SpinEdit2Change(Sender: TObject);
n:=StrToInt(SpinEdit2.Text);//
n присваивается содержимое поля редактора
procedure TForm1.Button1Click(Sender: TObject);
Randomize;
// инициализация датчика случайных чисел
GetMem(pA,4*m);
// выделение памяти для массива из m указателей
begin // формирование i-й строки массива
{ Выделение памяти для n элементов i-й строки}
GetMem(pA^[i],SizeOf(integer)*n);
pA^[1]^[1]:=Random(1000);// случайное целое число занести в массив
begin // формирование j-го элемента строки
1: r:=Random(1000); // генерирование случайного числа
if r=pA^[k]^[l] then // если такое число уже
есть в массиве тогда...
pA^[i]^[j]:=r;
//
случайное число занести в массив
for i:=1 to m do // элементы массива занести в ячейки
for j:=1 to n do // компонента StringGrid1
StringGrid1.Cells[j-1,i-1]:=IntToStr(pA^[i]^[j]);
{ Поиск min и max значений среди элементов массива}
min:=pA^[i]^[j]
else
if pA^[i]^[j]>max then
max:=pA^[i]^[j];
Label7.Caption:=IntToStr(min);
// вывод min значения
Label9.Caption:=IntToStr(max);
// вывод max значения
{ Освобожение памяти, занимаемой n элементами i-й строки}
FreeMem(pA^[i],SizeOf(integer)*n);
{ Освобождение памяти, занимаемой массивом из m указателей}
procedure TForm1.StringGrid1DrawCell(Sender: TObject;
Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
if StringGrid1.Cells[Col,Row]=IntToStr(min) then
// если элемент ячейки
begin // равен min тогда...
Brush.Color:=clGreen; // установить цвет кисти зеленый
FrameRect(Rect); // выделить границы ячейки заданным цветом
else
if StringGrid1.Cells[Col,Row]=IntToStr(max) then // если
элемент ячейки
begin //
равен max тогда...
Brush.Color:=clRed; // установить цвет кисти красный
FrameRect(Rect); // выделить границы ячейки заданным цветом
Задание2 : создать приложение для
формирования стека, который заполняется путем ввода целых положительных чисел с
клавиатуры. Как только будет введено первое отрицательное число, содержимое
стека выводится на панель интерфейса, а память занимаемая его элементами
освобождается.
Один из
возможных вариантов панели интерфейса создаваемого приложения показан на рис.9.2.
9.2.1.
Размещение компонентов на Форме
Разместим на Форме компоненты Label, Edit, Button и Memo.
Сохраним модуль под именем UnStek (текст модуля приведен в п.9.2.3).
Двойным нажатием клавиши “мыши”
на Форме и кнопке Button1 создайте соответствующие процедуры
обработки событий. Используя текст модуля UnStek, внимательно наберите
операторы этих процедур.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
Var // объявление глобальных
переменных :
PVer,
// указатель вершины стека
PTek:PSt;
// текущий указатель
procedure TForm1.Button1Click(Sender: TObject);
New(PTek);
// выделить память
ElSt:=StrToInt(Edit1.Text);//
в ElSt занести значение из Edit1
PTek^.inf:=ElSt;
// в информационную часть стека занести ElSt
PTek^.adr:=PVer;
// в адресную часть занести указатель на вершину
PVer:=PTek;//
указатель вершины должен указывать на последний элемент
if
ElSt>=0 then // если элемент стека неотрицательный
тогда...
Edit1.Text:='';// очистить окно редактора Edit1
Edit1.SetFocus;// передать фокус ввода редактору Edit1
Memo1.Lines.Add('Элементы стека:'); // вывести заголовок
Memo1.Lines.Add(#9+IntToStr(PTek^.inf));// вывод элементов
Dispose(PTek); // освободить память
procedure TForm1.FormCreate(Sender: TObject);
PVer:=nil; // инициализировать
указатель вершины
ElSt:=0; //
инициализировать элемент стека
По указанию преподавателя выберите два варианта индивидуальных
заданий. В заданиях №1-№15 необходимо использовать динамические массивы, а в
заданиях №16-№30 – динамические списки. Во всех заданиях необходимо
предусмотреть контрольный вывод исходных данных.
1.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры, меняет местами элементы с
наибольшим и наименьшим значениями среди четных и выводит полученный массив.
2.
Создать приложение,
которое осуществляет ввод m строк и n столбцов двумерного массива с клавиатуры и
выводит номер строки и номер столбца наименьшего из всех значений его элементов.
3.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры и выводит порядковый номер
элемента с наименьшим значением среди нечетных.
4.
Создать приложение,
которое осуществляет ввод значений элементов двумерного массива n -го
порядка с клавиатуры и выводит значение наибольшего из элементов главной
диагонали.
5.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры, изменяет порядок
следования элементов на противоположный и выводит полученный массив.
6.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры и выводит порядковый номер
элемента с наибольшим значением среди четных.
7.
Создать приложение,
которое осуществляет ввод значений элементов двумерного массива n -го
порядка с клавиатуры и выводит значение суммы элементов главной диагонали.
9.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры и выводит порядковый номер
элемента с наименьшим значением среди положительных.
10.
Создать приложение,
которое осуществляет ввод значений элементов двумерного массива n -го
порядка с клавиатуры, изменяет порядок следования элементов главной диагонали на
противоположный и выводит преобразованный массив.
11.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры, меняет местами элементы с
минимальным и максимальным значениями среди положительных и выводит полученный
массив.
12.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры и выводит порядковый номер
элемента с наибольшим значением среди отрицательных.
13.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры, меняет местами элементы с
наибольшим значением среди отрицательных и наименьшим среди положительных и
выводит полученный массив.
14.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры и выводит среднее
арифметическое значение элементов массива.
15.
Создать приложение,
которое осуществляет ввод k
значений элементов одномерного массива с клавиатуры, меняет местами элементы с
наименьшим значением среди четных и наибольшим среди нечетных и выводит полученный
массив.
16.
Создать приложение,
которое заносит в стек целые положительные числа с клавиатуры, выводит содержимое
стека и среднее арифметическое значение его элементов.
17.
Создать приложение,
которое заносит в стек символы с клавиатуры, выводит содержимое стека и сообщение
о том, содержится или нет в стеке заданный символ.
18.
Создать приложение,
которое заносит в каждый элемент стека английское слово с клавиатуры и, как
только будет введено слово “end”, выводит содержимое стека.
19.
Создать приложение,
которое заносит в стек произвольные целые числа с клавиатуры, выводит содержимое
стека и сообщение о том, содержится или нет в стеке заданное число.
20.
Создать приложение,
которое заносит в стек символы с клавиатуры, выводит содержимое стека и сообщение
о том, упорядочены ли элементы стека по алфавиту или нет.
21.
Создать приложение,
которое заносит в стек положительные целые числа с клавиатуры и, как только будет
введено число, равное сумме введенных чисел, выводит содержимое стека.
Похожие работы на - Программирование на Object Pascal в среде Delphi Практическое задание. Информационное обеспечение, программирование.
Реферат по теме Аспекты переноса в групповой психотерапии
Левый смежный класс | Правый смежный класс
Курсовая работа по теме Инновационный подход в туристическом бизнесе
Курсовая работа по теме Історико-культурна спадщина Запоріжжя
Дипломная работа: Маркетинговое исследование рыночной адекватности обновленной концепции делового издания Самарское
Контрольная работа по теме Исполнение наказания. Лишение свободы и арест
Контрольная работа по теме Рецензия на картину Ван Гога Винсента 'Ваза с двенадцатью подсолнухами'
Реферат: Объекты правоотношений по социальному обеспечению
Контрольная работа: Пространство и время. Принципы относительности. Необратимость времени
Курсовая Работа На Тему Денежное Обращение. Закон Денежного Обращения
Научные Революции Реферат По Философии
Реферат: Ярослав Мудрый
Гто Реферат По Физкультуре 6 Класс
Курсовая работа: Компьютерные сети
Курсовая работа по теме Заведомо ложный донос в уголовном праве РФ
Реферат: Типовые схемы применения коммутаторов в локальных сетях
Практическое задание по теме Задачи по семейному праву \Условие-Вопрос-Решение\
Реферат По Предмету Психология
Контрольная работа: Социология алкоголизма
Контрольная Работа По Математике 1 Курс
2.2.2 Расчет эллиптического днища колонны
Похожие работы на - Начала содержательной логики
Похожие работы на - Фольклорна практика