Программирование на языке C#
Download 1.19 Mb. Pdf ko'rish
|
Программирование на языке 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 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling