русс | укр

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

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

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

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


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

Сортировка элементов в массиве.


Дата добавления: 2015-07-09; просмотров: 577; Нарушение авторских прав


Сортировка представляет собой процесс упорядочения элементов в массиве в порядке возрастания или убывания их значений.

Рассмотрим процесс сортировки пузырьковым методом. Пусть необходимо отсортировать в порядке возрастания

Сравним первый элемент со вторым, если первый больше, поменяем их местами, затем второй с третьим и так далее. Самый большой окажется последним (всплывет). Эту операцию повторяем, но не до последнего, а до предпоследнего элемента. Еще повторяем.

Дано 7 3 5 4 2

Первый этап 3 5 4 2 7

Второй этап 3 4 2 5 7

Третий этап 3 2 4 5 7

Четвертый этап 2 3 4 5 7

Процесс обмена удовлетворяет следующему алгоритму

 

procedure TForm1.Button2Click(Sender: TObject);

Begin

n:=5;

for j:=1 to n-1 d

for i:=2 to n-j+1 do

if a[i-1]>a[i] then

Begin

buf:=a[i-1];

a[i-1]:=a[i];

a[i]:=buf;

end;

for i:=1 to n do

StringGrid1.Cells[i-1,0]:=IntToStr(A[i]);

end;

Многомерные массивы

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

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

Компоненту StringGrid1 даем имя Tabl.

Дважды щелкнем на форме, откроется процедура в которой опишем зафиксированные ячейки таблицы.

procedure TForm1.FormCreate(Sender: TObject);

Begin

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]:='США';

Tabl.Cells[0,12]:='Франция';

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

end;

Обработаем кнопку «Итоги».

procedure TForm1.Button1Click(Sender: TObject);

Var

c,r:integer; // номер колонки и строки

p:integer; // количество очков

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

buf:array[0..5] of string; // буфер

i:integer; //номер строки во время сортировки

S: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'; // в случае пустой ячейки в нее пишем «0»

p:=3*StrToInt(Tabl.Cells[1,r])+

2*StrToInt(Tabl.Cells[2,r])+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; // принимаем максимальный элемент в m – ой строке

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 // начало процесса обмена

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 При использовании материалов прямая ссылка на сайт обязательна.

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