Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Метод обмена

Движение двоичного образа по фоновой картинке | В динамических приложениях | Перемещение картинок | События от мыши | Движение образа по удерживанию левой кнопки мыши | Код клавиши | По нажатию клавиши со стрелкой | Совмещение управляемого и неуправляемого движений. | В графических приложениях | Создание кнопок |


Читайте также:
  1. Case-метод Баркера
  2. I. Методические рекомендации по выполнению самостоятельной работы студентов.
  3. I. Организационно-методический раздел
  4. I. Понятие, формы и методы финансового контроля
  5. II. Материалы и методы
  6. II. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ДЛЯ СТУДЕНТОВ
  7. III. Источники и методы получения аудиторских доказательств при проверке кредитов и займов

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

После того как массив упорядочен, кнопка «Сортировать массив» должна стать неактивной. Для этого сделаем

Button2.Enabled:= false, где Button 2 – это кнопка сортировки.

На рис. 33 приведен результат работы проекта после окончания сортировки.

 

Рис. 33. Сортировка массива методом прямого выбора

 

Задание. Сделайте так, чтобы по кнопке «Заполнить массив» можно было начать сначала (все строки таблицы, кроме нулевой, надо сделать пустыми, а нулевую вновь заполнить случайными числами).

6.1.2. Проект «Таблица успеваемости»

Постановка задачи. Составьте и отсортируйте таблицу успеваемости. Эта задача – пример использования двумерного массива (ввод, сортировка, вывод) и компонента TStringGrid.

Реализация. Положите на форму компонент TStringGrid со страницы Additional. Он представляет собой таблицу. Задайте число строк, равным 14, и число столбцов, равным 6. Заполните фиксированный столбец названиями предметов, а фиксированную строку – названиями оценок. Саму таблицу заполните числом оценок по каждому предмету. Так как содержимое ячеек имеет строковый тип, то при работе с числами все время придется менять тип данных,
т. е. переводить строки в целые числа и обратно. По нажатию кнопки «Итоги» считается средний балл, а затем таблица сортируется
по столбцу «Средний балл». Результат работы приложения приведен на рис. 34.

 

Рис. 34. Проект «Таблица успеваемости»

 

В обработчике TForm1.FormActivate(Sender: TObject) происходит активация формы. В его коде зададим начальные данные, т. е. заполним названия колонок и строк. В приведенном коде имя компонента StringGrid 1 заменено на tab l.

 

procedure TForm1.FormActivate(Sender: TObject);

begin

// Заполняем изначально название колонок и строк

tabl.Cells[0,0]:='Предмет';

tabl.Cells[1,0]:='Удов. "3"';

tabl.Cells[2,0]:='Хорошо "4"';

tabl.Cells[3,0]:='Отлично "5"';

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]:='Информатика';

tabl.Cells[0,12]:='ОБЖ';

tabl.Cells[0,13]:='Физика';

end;

 

Ниже дан код обработчика события OnClick кнопки «Итоги»:

 

procedure TForm1.Button1Click(Sender: TObject);

var

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

s:integer; // Всего оценок по предмету

p:integer; // Средний балл по предмету

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

buf:array[0..5] 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:=3*StrToInt(tabl.cells[1,r])+ 4*StrToInt(tabl.cells[2,r])+

5*StrToInt(tabl.cells[3,r]);

// Вывод результата

tabl.cells[4,r]:=IntToStr(s); // Всего оценок

if s<>0 then

tabl.cells[5,r]:=IntToStr(round(p/s)) // Средний балл

else

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

end;

 

{ Сортировка таблицы по убыванию по содержимому 5-го столбца методом выбора }

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

begin

m:=r; // Максимальный элемент - в 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 // Обменяем r -ю и 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;


Дата добавления: 2015-08-20; просмотров: 39 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Сортировка массива| Система предварительной продажи билетов

mybiblioteka.su - 2015-2024 год. (0.007 сек.)