Главная » Просмотр файлов » Г. Шилдт - С#4.0 Полное руководство

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 35

Файл №1160795 Г. Шилдт - С#4.0 Полное руководство (Г. Шилдт - С#4.0 Полное руководство) 35 страницаГ. Шилдт - С#4.0 Полное руководство (1160795) страница 352019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 35)

язык СФ Ниже приведен пример программы, в которой сначала организуется трехмерный массив, содержащий матрицу значений Зх3х3, а затем значения элементов этого массива суммируются по одной из диагоналей матрицы. Суммировать значения по одной из диагоналей матрицы ЗхЗхЗ. цв1пд Бувсезг с1ввв тпгееонаггьх ( вгагьс чо1г) Мазо() ьпь[,,) и = пен 1пг[3, 3, 3]; 1пс вцз = 0; ьпс и = 1; Гог(1пс х=О; х < 3) х++) Гог(гпс у=01 у < Зг у+е) Гог(ьпг а=О) з < 3) з+е) в[х, у, з] = пет; вци = и[0, О, 0] е и [1, 1, 1] + и[2, 2, 2]; Сопао1е.нгтгеьгпе("Сумма значений по первой диагонали: " + вци) Вот какой результат дает выполнение этой программы.

Сумма значений по первой диагонали: 42 Инициайизация многомерных массивов Для инициализации многомерного массива достаточно заключить в фигурные скобки список инициализаторов каждого его размера. Ниже в качестве примера приведена общая форма инициализации двумерного массива: тип[, ] имя массива = ( ( га1, та1, га1, ..., га1), (га1, га1, га1, ..., га1], ( ча1, га1, га1, ..., иа1) )' где уа1 обозначает инициализирующее значение, а каждый внутренний блок — отдельный ряд. Первое значение в каждом ряду сохраняется на первой позиции в массиве, второе значение — на второй позиции и т.д.

Обратите внимание на то, что блоки инициализаторов разделяются запятыми, а после завершающей эти блоки закрывающей фигурной скобки ставится точка с запятой. В качестве примера ниже приведена программа, в которой двумерный массив вс]гз инициализируется числами от 1 до 10 и квадратами этих чисел. Инициализировать двумерный массив.

цв1пч зувсеви Глава 7. Массивы и строки 185 с1авв 8Чиагев ( всасгс чогг) Нагп() ( 1пг[,] вЯгв = ( ( 1, 1 ), < 2, 4 ), ( 3, 9 ), ( 4, 16 ), ( 5, 25 ), <6,36), ( 7, 49 ), ( 8, 64 (9,81), <1О,(ОО) 1пг г, бог(1=0; г < 10; гаа) бог(3 — 04 1 с 24 зче) Сопво1е.истое(вЧгв[1,3) 4 " "); Сопвс1Е.ИГ1СЕЬ1ПЕ<) 1 При выполнении втой программы получается следующий результат. 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100 Ступенчатые массивы В приведенных выше примерах применения двумерного массива, по существу, создавался так называемый ирямоугольныи массив.

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

Ступенчатые массивы объявляются с помощью ряда квадратных скобок, в которых указывается их размерность. Например, для объявления двумерного ступенчатого массива служит следующая общая форма: тип[) [) имя массива = пеи тип(раэмер) () 1 186 Часть!. Язык С№ где размер обозначает число строк в массиве. Память для самих строк распределяется индивидуально, и поэтому длина строк может быть разной.

Например, в приведенном ниже фрагменте кода объявляется ступенчатый массив 3 аддед. Память сначала распределяется для его первого измерения автоматически, а затем для второго измерения вручную. 1пп [] [] заддес) = пен ьпг [3! [) ) Заддед[0) = пен 1пс[4); Заддед[1] = пен ьпп(3); ]аддед[2) = пен ьпо[5)) После выполнения этого фрагмента кода массив 3 аддед выглядит так, как показано ниже. ]аяяед [ОЦО] ]аяяед [ОЦ1] ]аяяед [ОЦ2] ]аяяед [ОЦЗ] ]аяяед [1ЦО] ]аяяед [1Ц1] ]аяяед [1Ц2] ]аЯЯед [2ЦО] ]а№Яед [2][1] ]аЯ№ед [2Ц2] ]аЯ№ед [2ЦЗ] ]аЯ№ед [2][4] Теперь нетрудно понять, почему такие массивы называются ступенчатыми! После создания ступенчатого массива доступ к его элементам осуществляется по индексу, указываемому в отдельных квадратных скобках. Например, в следующей строке кода элементу массива 3 аддед, находящемуся на позиции с координатами (2,1), присваивается значение 10. заддед(2)[1) = 10) Обратите внимание на синтаксические отличия в доступе к элементу ступенчатого и прямоугольного массива.

В приведенном ниже примере программы демонстрируется создание двумерного ступенчатого массива. // Продемонстрировать применение ступенчатых массивов. ивьпд Зувгев) с1авв Заддед ( воап1с но1д Иа1п() ( ьпс[) [] заддед = пен ьпс[3] []) ]аддед[0) = пен 1пс[4); заддед[1) = пен ьпс(3]) заддед[2) = пен 1пс[5]; ьпс ь) // Сохранить значения в первом массиве.

гог(1=0; 1 < 4; 14+) ]аддед[0)(1] // Сохранить значения во втором массиве. Год(1=0; 1 < 3; 1++) Заддед[1) (1) = 1) Глава 7. Массивы и строки 187 Сохранить значения в третьем массиве. Гог(1=0; 1 < 51 1++) )аээеа[2)[1] Вывести значения из первого массива. Гог(г=о; 1 < 4; д++) Сопяоге.нггсе()адчео[0)[1) Сопяо1е.нгггеььпе (); Вывести значения из второго массива. Гог(1=01 1 < 3; 1++) Сопяо1е.нгьсе()асздес)[1)[1) Сопяо1е.иггсевгпе () г // Вывести значения из третьего массива. Гог(а=о~ т < 51 сопзо1е.иггге(задчес[2)[1) + " ")г Сопяо1е.нггсеьгпе()," Выполнение этой программы приводит к следующему результату. 0123 0 1 2 01234 Ступенчатые массивы находят полезное применение не во всех, а лишь в некоторых случаях. Так, если требуется очень длинный двумерный массив, который заполняется не полностью, т.е, такой массив, в котором используются не все, а лишь отдельные его элементы, то для этой цели идеально подходит ступенчатый массив.

И последнее замечание: ступенчатые массивы представляют собой массивы массивов, и поэтому они не обязательно должны состоять из одномерных массивов. Например, в приведенной ниже строке кода создается массив двумерных массивов. гпг[)[,] ]аодеа = пен ьпг[3)[,)г В следующей строке кода элементу массива 3 аооес] [О] присваивается ссылка на массив размерами 4х2. ]аооеС[0) = пен гпс[4, 2] А в приведенной ниже строке кода элементу массива 3 асгсес) [ О ! [1, О ] присваивается значение переменной 1.

)аодеа[0) [1, О] Присваивание ссылок на массивы Присваивание значения одной переменной ссылки на массив другой переменной, по существу, означает, что обе переменные ссылаются на один и тот же массив, 188 Часть!. Язык С№ и в этом отношении массивы ничем не отличаются от любых других объектов. Такое присваивание не приводит ни к созданию копии массива, ни к копированию содержимого одного массива в другой. В качестве примера рассмотрим следующую программу.

// Присваивание ссылок на массивы. пягпд зуяяега; с1аяя Аяя1дпйяеГ ( ясасгс то10 Ма1п() ( 1пт 1пт[] пшпя1 = пеи ьпс(10] 1пс[] поия2 = пем 1пс[10] гог(г=О; г < 10; г++) ппия1[г] Гог(1=01 1 < 10; 14+) ппмв2(г] = -1; Сопяо1е.иггсе("Содержимое массива поия1: ")) Гог(1=0; 1 < 10; 1++) Сопяо1е.иггге(ппия1(1] Сспяо1е.нг1гесгпе(); Сопво1е.Иггсе("Содержимое массива поия2: Гог(я=01 г < 10; 1++) Сопяо1е.нгъяе (поп1я2 (1] е " "); Сопяо1е.нггяеъгпе() 1 пиия2 = поия11 // теперь поия2 ссылается на пиия1 Сопяо1е.Хг1се("Содержимое массива поия21п" + "после присваивания: ") Гог(1=08 1 < 10; 1++) Сопяо1е.нгвое(пшяя2[1) + " '); Сопяо1е.Хгьтеь1пе (); Палее оперировать массивом поия1 посредством переменной ссылки на массив пиия2.

пшяя2(3) = 99; Сопяо1е.нггсе("Содержимое массива поия1 после измененияМ" "посредством переменной поия2: гог(1=0; 1 < 10; гте) Сопяо1е.нггое (ппвя1(г] я " ") 1 Сопяо1е.иг1геьгпе() 1 Выполнение этой программы приводит к следующему результату. Содержимое массива пожя1: 0 1 2 3 4 5 6 7 8 9 Содержимое массива поия2: 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 Содержимое массива поия2 после присваивания: 0 1 2 3 4 5 6 7 8 9 Содержимое массива ппия1 после изменения посредством переменной ппия2: О 1 2 99 4 5 6 7 8 9 Глава т. Массивы и строки 189 Как видите, после присваивания переменной пцвя2 значения переменной пцвя1 обе переменные ссылки на массив ссылаются на один и тот же объект. Применение свойства Ьепд~Ь Реализация в С)) массивов в виде объектов дает целый ряд преимуществ.

Одно из них заключается в том, что с каждым массивом связано свойство Ьепдг) Ь СОдЕРжащее число элементов, из которых может состоять массив. Следовательно, у каждого массива имеется специальное свойство, позволяющее определить его длину. Ниже приведен пример программы, в которой демонстрируется это свойство. /! Использовать свойство Ьепдпн массива. пяьпд Яуясев( с1ая* Ьепдпноево ( яяавгс но10 Наьп() ( Ьпп() ппвя = лен 1пс(10]; Сопяо1е.иг1пеъьпе("Длина массива ппвв равна " + пцвя,ьепдяп) Использовать свойство Ьепдпь для инициализации массива ппвя.

бог(ьпп 1=0; 1 < ловя.ьепдгш ловя(1] = ь * 1; А теперь воспользоваться свойством Ьепдгп // для вывода содержимого массива ловя. сопяо1е.игьсе("содержимое массива пива: "); бог(ьпс я=о; 1 < ппвя.ьепдси( 1++) Сопяо1е.игьпе(пцвя(1] ь " "); Сопяо1е.игтяеЬЬпе() ) При выполнении этой программы получается следующий результат. Длина массива пцвя равна 10 Содержимое массива ппвя: 0 1 4 9 1б 25 Зб 49 64 81 Обратите внимание на то, как в классе ьепдс](()ево свойспю пцвя.

Характеристики

Тип файла
DJVU-файл
Размер
7,66 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее