ТОР 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
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; Не нашли, что искали? Воспользуйтесь поиском:
|