Программирование на языке C#


Download 1.19 Mb.
Pdf ko'rish
bet37/66
Sana23.10.2023
Hajmi1.19 Mb.
#1717181
1   ...   33   34   35   36   37   38   39   40   ...   66
Bog'liq
Программирование на языке C#

ассоциативный 
массив
длина 
которого 
соответствует количеству строк массива. Ячейка ассоциативного 
массива с номером 
i
соответствует 
i
строке матрицы. Определенное 
значение в 
i
ячейке означает, участвует ли данная строка матрицы в 
рассмотрении, или нет.
В случае ступенчатого массива, ассоциативный массив заводить не 
нужно, достаточно в соответствующую ячейку массива ссылок 
записать значение 
null

Рассмотрим реализацию удаления строк с одинаковыми 
значениями, представленную в листинге 12. Создаём ступенчатый 
двумерный массив 
arrX 
с количеством строк 
row

Булева переменная 
isEqual
со значение 
true 
служит индикатором одинаковости 
значений между собой в строке матрицы, в противном случае эта 
переменная принимает значение 
false
. На каждой итерации, перед 
выполнением проверки на равенство элементов строки матрицы между 
собой, переменной 
isEqual
присваиваем значение 
true
, т.е. полагаем, 
что все элементы равны. Переменная 
isEqual 
принимает значение
false 
только если находится пара несовпадающих элементов. 
Условие продолжения цикла делаем составным, 
j < arrX[i].Length-1 && isEqual == true 

т.е. цикл 
останавливает работу в случае, когда все элементы просмотрены, а 
59 


следовательно равны между собой, либо, когда, хотя бы одна пара 
элементов не совпадает между собой. После окончания работы цикла 
удаляем только те строки, для которых индикатор 
isEqual
принимает 
значение 
true
. Для этих строк в соответствующую ячейку массива 
ссылок записываем значение 
null
.
int row = 4; 
int[][] arrX = new int[4][]; // Ступенчатый массив 
arrX[0] = new int[2] { 3, 3}; 
arrX[1] = new int[4] { 2, 4, 6, 8 }; 
arrX[2] = new int[6] { 2, 2, 2, 2,2,2}; 
arrX[3] = new int[8] { 2, 4, 6, 8,10,12,14,16}; 
bool isEqual = true; 
for(int i=0;i < row;i++){ 
isEqual = true; 
for (int j=0; j(arrX [i] [j] != arrX [i] [j + 1]) 
isEqual = false; 

if (isEqual == true) 
arrX [i] = null; 

Листинг 12. 
При работе с матрицей, в которой удалены некоторые строки, 
необходимо проверять массив ссылок на существование строки. 
Например, в листинге 13 показан пример работы с матрицей 
arrX
,
в 
которой некоторые строки удалены. 
for(int i=0;i < row;i++){//Идем по строкам 
if(arrX[i]!= null){// Обязательно выполняем проверку на 
наличие строки 
// Тело цикла, в котором выполняем некоторую обработку 
данных в строке arrX[i] 

}
Листинг 13. 

Download 1.19 Mb.

Do'stlaringiz bilan baham:
1   ...   33   34   35   36   37   38   39   40   ...   66




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling