Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Пример программы





Следующая программа обрабатывает результаты спортивных соревнований (зимней олимпиады в Нагано, 1998 г.). Исходные данные для обработки представлены в таблице.

Результаты зимней олимпиады в Нагано (Япония, 1998)

Страна     Количество медалей  
золотых   серебряных   бронзовых  
Австрия Германия Италия Канада Нидерланды Норвегия Россия США Финляндия Швейцария Япония          

 

Программа должна вычислить общее количество медалей, завоеванное представителями каждой страны, и соответствующее количество очков (баллов), которое вычисляется по следующему правилу: за каждую золотую медаль команда получает семь очков, за серебряную — шесть, за бронзовую — пять очков.

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

В форме приложения (рис. 3) появился компонент, который до сих пор в программах книги не использовался, — StringGrid (строковая таблица), значок которого находится на дополнительной (Additional) странице палитры компонентов.

Рис. 3. Форма приложения

 

Ниже перечислены некоторые свойства компонента StringGrid.

Свойство Значение
Имя компонента. Используется в программе для доступа к свойствам компонента Name
Количество колонок таблицы ColCount
Количество строк таблицы RowCount
Соответствующий таблице двумерный строковый массив. Если строки и столбцы таблицы нумеровать с нуля, то ячейке (Cell) таблицы, находящейся на пересечении i-й колонки и j-й строки соответствует cells [i, j] элемент массива Cells
Количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте/ FixedCols
Количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте FixedRows
Признак допустимости редактирования содержимого ячеек таблицы Options.goEditing
Ширина колонок таблицы DefaultColWidth
Высота строк таблицы DefaultRowHeight
Ширина линий, ограничивающих ячейки таблицы GridLineWidth
Расстояние от левой границы поля таблицы до левой границы формы Left
Расстояние от верхней границы поля таблицы до верхней границы формы Тор
Высота поля таблицы Height
Ширина поля таблицы Width
Шрифт, используемый для отображения содержимого ячеек таблицы Font
Признак наследования характеристик шрифта формы ParentFont

 

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

Свойство Значение
Name Tabl
ColCount  
RowCount  
FixedCols  
FixedRows  
Options.goEditing True
DefaultColWidth  
DefaultRowHeight  
GridLineWidth  

Ячейки первой, зафиксированной, строки таблицы используются в качестве заголовков колонок таблицы. Во время создания формы приложения установить значения элементов массива cells нельзя, так как элементы массива доступны только во время работы программы. Поэтому значения элементов массива cells, соответствующих первой строке таблицы, устанавливает процедура обработки события onActivate (ее текст приведен ниже), которое происходит во время активизации формы приложения. Кроме того, эта процедура вписывает в первую колонку таблицы названия стран-участниц соревнований.

 

procedure TFonnl.FormActivate(Sender: TObject);

begin

Label1.Caption:='Вычисляет количество медалей, завоеванных спортсменами каждой страны'+#13+

'и количество набранных баллов, Затем список будет отсортирован в соответствии '+#13+

'с количеством баллов';

tabl.Cells[0,0]:='Страна';

tabl.Cells[1,0]:='Золотых';

tabl.Cells[2,0]:='Серебряных';

tabl.Cells[3,0]:='Бронзовых';

tabl.Cells[4,0]:='Всего';

tabl.Cells[5,0]:='Баллов';

tabl.Cells[0,1]:='Австрия';

tabl.Cells[0,2]:='Германия ';

tabl.Cells[0,3]:='Италия';

tabl.Cells[0,4]:='Канада';

tabl.Cells[0,5]:='Нидерланды';

tabl.Cells[0,6]:='Норвегия';

tabl.Cells[0,7]:='Россия';

tabl.Cells[0,8]:='США';

tabl.Cells[0,9]:='Финляндия';

tabl.Cells[0,10]:='Швейцария';

tabl.Cells[0,11]:='Япония';

end;

 

Программа обработки исходной таблицы, текст которой приведен ниже, запускается в результате щелчка на командной кнопкеИтоги (Button1).

 

procedure TForm1.Button1Click(Sender: TObject);

var

c,r:integer; { номер колонки и строки таблицы }

s:integer; { всего медалей у команды }

p:integer; { очков у команды }

m: integer; { номер строки с максимальным количеством очков }

buf:array[0..6] of string; { буфер для обмена строк }

i:integer; { номер строки используется во время сортировки }

begin

for r:=1 to tabl.rowcount do { обработать все строки }

begin s:=0;

{ вычисляем общее кол-во медалей }

for c:=1 to 3 do

if tabl.cells[c,r] <> ''

then s:=s+StrToInt(tabl.cells[c,r])

else tabl.cells[c,r]:='0';

{ вычисляем количество очков }

p:=7*StrToInt(tabl.cells[1,r])+ 6*StrToInt(tabl.cells[2,r])+ 5*StrToInt(tabl.cells[3, r]);

{ вывод результата } tabl.cells[4,r]:=IntToStr(s);

tabl.cells[5,r]:=IntToStr(p);

end;

{ сортировка таблицы }

for r:=1 to tabl.rowcount-1 do

begin

m:=r; { максимальный элемент - в г-й строке }

for i:=r to tabl.rowcount-1 do

if StrToInt(tabl.cells[5,i])>StrToInt(tabl.cells[5, m])

then m:=i;

if r <> m then

begin { обменяем г-ю и m-ю строки таблицы }

for c:=0 to 5 do begin

buf[c]:=tabl.Cells[c,r];

tabl.Cells[c,r]:=tabl.Cells[c,m];

tabl.Cells[c,m]:=buf[c];

end;

end;

end;

end;

 

Сначала для каждой страны программа вычисляет общее количество медалей и соответствующее ему количество очков. Затем, используя метод простого выбора, программа выполняет сортировку таблицы по убыванию количества набранных очков. Во время сортировки для обмена строк таблицы используется строковый массив buf, индекс которого, как и индекс строки таблицы, меняется от нуля до пяти (см. инструкцию объявления массива в тексте программы). Такой прием позволяет наиболее просто выполнить копирование замещаемой строки в буфер и замещение строки содержимым буфера.

На рис. 4 приведен пример результата работы программы.

 

Рис. 4. Результат работы программы

 

Date: 2015-06-06; view: 583; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию