Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример создания приложения




Задание. Создать Windows-приложение, реализующее следующую задачу. В целочисленном массиве a найти максимальный и минимальный элементы массива (предполагается, что каждый из них единственный) и поменять их местами. Отредактированный массив вывести на экран.

 

1.1.1. Размещение компонентов на Форме

Один из возможных вариантов панели интерфейса создаваемого приложения показан на рисунке 2.1.

Рис. 2.1. Размещение компонентов на Форме

 

Компонент SpinEdit1 находится на странице Samples Палитры компонентов, компоненты StringGrid – на странице Additional.

Для задания размерности массива удобно использовать компонент SpinEdit. Компонент SpinEdit предназначен для отображения и редактирования целого числа. Установите для компонента SpinEdit1 значения свойств: MinValue=1, MaxValue=10.

С помощью Инспектора объектов свойствам компонентов StringGrid1 и StringGrid2 задайте следующие значения: FixedCols – 0, FixedRows – 0, RowCount – 1, ColCount – 10 (предельное значение количества элементов массива), DefaultColWidth – 32.

Для ввода исходных данных в таблицу StringGrid1, выберете в Инспекторе объектов для компонента StringGrid1 свойство Option, дважды щелкните «мышью» на символе + и в открывшемся списке опций установить значение goEditing в True.

 

1.1.2. Сохранение проекта

Для нового проекта создайте новую папку, например, X:\35эи\ \Mod2\Lab1.

Сохраните проект File | Save Project As…. Сначала сохраните модуль c именем UnMas.pas, затем файл проекта под именем PrMas.dpr.

Последующие сохранения выполнять командами File | Save All.

 

1.1.3. Создание процедуры обработки события FormCreate Создайте процедуру FormCreate, наберите текст процедуры procedure TForm1.FormCreate(Sender: TObject).

 

1.1.4. Создание процедуры обработки события SpinEdit1Change

Событие SpinEdit1Change возникает при любом изменении значения в поле редактора SpinEdit1. Создадим процедуру обработки этого события, в котором присвоим значение n, полученное из поля редактора SpinEdit1, свойству ColCount компонентов StringGrid. Это позволит управлять размерами таблиц StringGrid с помощью компонента SpinEdit1. Изменение значений в поле редактора SpinEdit1 сразу приведет к изменению размера таблиц StringGrid. Дважды щелкните «мышью» на компоненте SpinEdit1 – курсор установится в тексте процедуры-обработчика события SpinEdit1Change. Наберите операторы этой процедуры, используя текст модуля UnMas.

 

1.1.5. Создание процедуры обработки события нажатия кнопки Button1 (Button1Click)

Создайте процедуру обработки события нажатия кнопки «Пуск» – procedure TForm1.Button1Click(Sender: TObject) и наберите текст этой процедуры.

 

1.1.6. Работа с приложением

Запустите созданное приложение, выберите размерность массива a (например, 10), введите числовые значения элементов массива a и убедитесь, что приложение функционирует в соответствии с заданием.

На рисунке 2.2 показан интерфейс приложения после ввода исходных данных и нажатия кнопки «Пуск».

Рис. 2.2. Интерфейс приложения после его выполнения

 

Текст программы приведен в листинге 2.1.

Листинг 2.1

unit Unit1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Spin;

type

TForm1 = class(TForm)

SpinEdit1: TSpinEdit;

Label1: TLabel;

StringGrid2: TStringGrid;

Button1: TButton;

Label2: TLabel;

StringGrid1: TStringGrid;

Label3: TLabel;

Label4: TLabel;

procedure FormCreate(Sender: TObject);

procedure SpinEdit1Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

var a:array[1..10] of integer; //объявление массива a

n:integer; //n – кол-во элементов в массиве a

procedure TForm1.FormCreate(Sender: TObject);

begin

SpinEdit1.Text:='6'; //начальное значение n

StringGrid1.ColCount:=6; //количество столбцов массива a

StringGrid2.ColCount:=6;

end;

procedure TForm1.SpinEdit1Change(Sender: TObject);

begin

n:=StrToInt(SpinEdit1.Text);

StringGrid1.ColCount:=n;

StringGrid2.ColCount:=n;

end;

procedure TForm1.Button1Click(Sender: TObject);

var i,max,imax,min,imin:integer; //объявление локальных переменных

begin

n:=StrToInt(SpinEdit1.Text);

StringGrid1.ColCount:=n;

StringGrid2.ColCount:=n;

{Заполнение массива А исходными данными }

for i:=1 to n do a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);

{Нахождение мин. и макс. значений и их порядковых номеров }

max:=a[1]; imax:=1;

min:=a[1]; imin:=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;

{Меняем местами минимум и максимум}

a[imax]:=min; a[imin]:=max;

{Вывод отредактированного массива в таблицу}

for i:=1 to n do

StringGrid2.Cells[i-1,0]:=IntToStr(a[i]);

end; end.

Практическое задание

Создайте приложение и протестируйте его работу.

Индивидуальные задания 1-го уровня

1. Массив а1, а2, ….., аn содержит экзаменационные оценки группы Обучающийсяов по высшей математике. Определить средний балл группы по данной дисциплине.

2. Дан массив d1, d2, ….., dn действительных чисел. Определить произведение элементов массива.

3. Массив c1, c2, ….., cn – стипендия группы абитуриентов. В текущем месяце каждому Обучающийсяу положена надбавка к стипендии в размере 50 000 рублей. Рассчитать окончательную сумму стипендии для каждого члена группы в текущем месяце.

4. Каждый элемент массива c1, c2, ….., cn увеличить в 3 раза.

5. Определить среднее арифметическое значение элементов массива r1, r2, ….., rn

6. Группа комбайнов выкопала соответственно p1, p2, ….., pn тонн картофеля. Определить суммарное количество картофеля, убранное всеми комбайнами.

7. Каждый элемент массива действительных чисел m1, m2, ….., mn уменьшить на 3.

8. Определить среднее геометрическое значение элементов массива p1, p2, ….., pn

9. Дан массив d1, d2, ….., dn действительных чисел. Каждый элемент массива увеличить на величину первого элемента.

10. Имеются сведения о выработке электроэнергии одной из турбин электростанции по месяцам с января по декабрь: r1, r2, ….., r12. Определить среднемесячную выработку электроэнергии турбиной.

 

Индивидуальные задания 2-го уровня

1. В массиве t содержатся результаты измерений температуры воздуха, которые ежедневно проводились в течение февраля. Определить, сколько раз в течение месяца температура меняла знак. Значения температур ввести с клавиатуры.

2. Имеется n шаров. На одних шарах нанесены отрицательные числа, на других – положительные. Определить количество шаров с отрицательными значениями и сумму положительных чисел на шарах.

3. Пусть дано натуральное число n и вещественные числа а1, а2, ….., аn.. В последовательности а1, а2, ….., аn все отрицательные члены возведите в квадрат, а все неотрицательные замените на 1. Полученный массив вывести на экран. Элементы массива и его размерность n задаются пользователем с клавиатуры.

4. Массив v1, v2, ….., vn – возраст сотрудников учреждения. Определить средний возраст сотрудников и количество сотрудников старше среднего возраста.

5. Массивы m и f содержат отметки, полученные Обучающийсяами группы на экзаменах по математике и физике. Определить количество Обучающийсяов, получивших отличные отметки по обеим дисциплинам.

6. Задан целочисленный массив b. Подсчитать количество элементов этого массива, которые совпадают со своим номером.

7. Имеется k клубней 1-го сорта весом p1, p2, ….., pk и n клубней

8. 2-го сорта весом r1, r2, ….., rn. Определить, клубни какого сорта в среднем тяжелее.

9. Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры, изменяет порядок следования элементов на противоположный и выводит полученный массив.

10. Даны списки команд высшей лиги а1, а2, ….., аk, количество очков, набранных соответственно каждой из команд а1, а2, ….., аk. Напечатать список команд, набравших более r очков. Значение r задается пользователем.

11. Массив r содержит сведения о количестве Обучающийсяов каждой группы I курса. Определить группу с максимальным количеством Обучающийсяов, считая, что номер группы соответствует порядковому номеру числа в массиве (считая, что такая группа единственная).

12. Дан список сотрудников предприятия с указанием года рождения r1, r2, ….., rk. Порядковый номер элемента массива соответствует табельному номеру сотрудника. Определить возраст самого молодого сотрудника и указать его табельный номер.

13. Пассажирский самолет может поднять груз общим весом r. Составить программу определения веса почтового груза, который можно поместить в самолет после посадки n пассажиров (условный вес одного человека 100 кг) и загрузки их багажа, составляющего p1, p2, ….., pn кг.

14. Даны координаты n точек (х1, y1), (x2, y2), …, (xn, yn). Определить количество точек, расположенных на оси ординат.

15. Верно ли, что отрицательных элементов последовательности а1, а2, ….., аn. больше, чем положительных?

16. Даны координаты n точек (х1, y1), (x2, y2), …, (xn, yn). Определить количество точек, попадающих в круг радиусом r с центром в начале координат.

 

Индивидуальные задания 3-го уровня

1. Дана последовательность действительных чисел а1, а2, ….., аn. Требуется домножить все элементы на квадрат ее наименьшего члена, если a1>=0, и на квадрат ее наибольшего члена в обратном случае.

2. Даны действительные числа а1, а2, ….., аn. Получить b1, b2, ….., bn, где bi равно сумме тех членов исходной последовательности, которые принадлежат интервалу (i-1, i) (i = 1, 2, …, n). Если интервал не содержит членов последовательности, то соответствующее bi положить равным нулю.

3. Даны целые числа а1, а2, ….., аn. Наименьший член последовательности заменить целой частью среднего арифметического всех элементов, остальные элементы оставить без изменения.

4. Даны две последовательности целых чисел а1, а2, ….., аn и b1, b2, ….., bn. В каждой последовательности числа не повторяются. Построить пересечение последовательностей (т. е. получить все числа, входящие в обе последовательности одновременно: c1, c2, ….., cm).

Контрольные вопросы

1. Что такое массив?

2. Как описываются массивы в языке Delphi?

3. На какой странице Палитры компонентов размещен компонент StringGrid?

4. Что обозначают свойства FixedRows и FixedCols компонента StringGrid?

5. Каким образом снять блокировку ввода данных в компонент StringGrid, принятую по умолчанию?


Практическая работа №6

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

 

Тема. Обработка двумерных массивов. Разработка программ с двумерными массивами

Цель работы: изучить средства организации циклических вычислительных процессов; овладеть практическими навыками работы с массивами; освоить применение компонента StringGrid для создания приложения, в котором используются массивы.

 

Ход работы

1 Повторить теоретический материал

2 Ответить на контрольные вопросы

3 выполнить практическое задание

4 Составить отчет

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...