русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Метод обмена


Дата добавления: 2014-11-27; просмотров: 776; Нарушение авторских прав


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

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

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

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

 

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

 

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

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

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

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

 

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

 

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



 

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;



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


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.617 сек.