Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






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




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

X[0] £ X[1] £… £ X[n-1],

и в порядке убывания, если

X[0] ³ X[1] ³… ³ X[n-1].

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

Пусть задан массив X из n целых чисел. Расположить элементы массива в порядке возрастания их значений.

 

Номер элемента          
Исходный массив          
Первый просмотр          
Второй просмотр          
Третий просмотр          
Четвертый просмотр          

 

 

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

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

 

 

Алгоритм сортировки

Для перестановки элементов в массиве по убыванию их значений необходимо при сравнении элементов массива заменить знак > на <.

 

Текст программы, сортирующей элементы в массиве по возрастанию методом «пузырька»:

Var i,n,j: integer; b:word;

X: array [1..100] of word;

begin

n:=StrToInt(Edit1.Text);

for i:= 1 to n do

X[i]:=StrToFloat(InputBox

('Ввод массива','Введите

'+IntToStr(i)+'элемент','0,00'));

for j:=1 to n-1 do

for i:=1 to n-j do

if X[i] > X[i+1] then

begin

b:=X[i];

X[i]:=X[i+1];

X[i+1]:=b;

end;

S:='';

for i:=1 to n do

S:=S+FloatToStrF(X[i],

ffFixed,5,2)+' ';

Label2.Caption:=S;

ЗАДАЧА. Все наименьшие элементы массива Х(n) заменить средним арифметическим его значений.

 

 

procedure TForm1.btn1Click(Sender: TObject);

var

n,i:integer;

S,min:Real;

X:array [1..20] of real;

begin

n:=StrToInt(Edt1.Text);

for i:=1 to n do

X[i]:=StrToFloat(

Strngrd1.Cells[i,0]);

 

S:=0;

for i:=1 to n do

S:=S+X[i];

S:=S/n;

edt2.Text:=FloatToStr(S);

 

min:=X[1];

for i:=2 to n do

if X[i]<min then

min:=X[i];

edt3.Text:=FloatToStr(min);

 

for i:=1 to n do

if X[i]=min then

X[i]:=S;

for i:=1 to n do

strngrd2.Cells[i,0]:=

FloatToStr(X[i])

end;

 

ЗАДАЧА.Дан массив А состоящий из k целых положительных чисел. Записать все четные по значению элементы массива А в массив В.

Фрагмент программы:

procedure TForm1.Button1Click(Sender: TObject);

var k,i,m:integer;

A,B:array [1..10] of integer;

begin

k:=StrToInt(Edit1.Text);

for i:=1 to k do

A[i]:=StrToInt(

StringGrid1.Cells[i,0]);

m:=0;

for i:=1 to k do

begin

if A[i] mod 2 =0 then

begin

m:=m+1;

B[m]:=A[i];

end;

end;

if m<>0 then

for i:=1 to m do

StringGrid2.Cells[i,0]:=

IntToStr(B[i])

else

MessageDlg('В массиве

нет четных элементов',

MtInformation,[mbOk],0);

end;

 

ЗАДАЧА. Дан массив Х(N). Переписать 7 первых положительных элементов массива Х подряд в массив Y.


 

 

 

procedure TForm1.btn1Click(Sender: TObject);

var n,i, k:integer;

X,Y:array [1..20] of real;

begin

n:=StrToInt(Edt1.Text);

for i:=1 to n do

X[i]:=StrToFloat(

Strngrd1.Cells[i,0]);

k:=0;

for i:=1 to n do

if X[i]>0 then

begin

k:=k+1;

Y[k]:=X[i];

if k=7 then

Break;

end;

if k<>0 then

for i:=1 to k do

strngrd2.Cells[i,0]:=

FloatToStr(Y[i]);

end;

Работа с матрицами

Матрица – это двумерный массив, каждый элемент которого имеет два индекса: номер строки и номер столбца.

Объявить двумерный можно так:

имя:array[и1Н..и1К,и2Н..и2К] of тип;

где

тип – тип элементов массива,

имя – имя матрицы,

и1Н..и1К – диапазон изменения номеров строк,

и2Н..и2К – диапазон изменения номеров столбцов матрицы.

 

Например,

var h: array [0..9,1..15] of integer;

Описана матрица целых чисел h, состоящая из 10 строк и 15 столбцов (строки нумеруются от 0 до 9, столбцы от 1 до 15).

Еще один способ описать матрицу, это создать новый тип данных:

Type

тип=array[и1Н..и1К,и2Н..и2К] of тип;

var

имя: новый_тип;

Например:

type

matrica=array [0..5,0..3] of byte;

var

a, b:matrica;

Для обращения к элементу матрицы необходимо указать ее имя, и в квадратных скобках через запятую номер строки и номер столбца:

имя[номер_строки, номер_столбца]

Например, h[2,4] – элемент матрицы h, находящийся в строке под номером 2 и столбце под номером 4.

 

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

Ввод-вывод матриц

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

 

Свойства компонента StringGrid

 

Свойство StringGrid1 StringGrid2 Описание
Height     Высота табл.
Width     Ширина табл.
ColCount     Кол-во столб.
RowCount     Кол-во строк
DefaultColWidth     Ширина столб.
DefaultRowHeight     Высота строки
Options. goEditinf true false Возможность редактирования таблицы

 

 

 

procedure TForm1.BitBtn1Click(Sender: TObject);

const n=4;m=4;

var i,j:byte;

A:array [1..n,1..m] of integer;

Begin

for i:=1 to n do

for j:=1 to m do

A[i,j]:=StrToInt(

StringGrid1.Cells[i,j]);

for i:=1 to n do

for j:=1 to m do

StringGrid2.Cells[i,j]:=

IntToStr(A[j,i]);

end;






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных