Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C++

Г. Шилдт - Полный справочник по C++ (1109478), страница 21

Файл №1109478 Г. Шилдт - Полный справочник по C++ (Г. Шилдт - Полный справочник по C++) 21 страницаГ. Шилдт - Полный справочник по C++ (1109478) страница 212019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Самыми распространенными среди них являются следующие. рггпс1("длина строк: Фс) ас]1п", ясг1еп(я1), ясг1еп(я2)]: 11[!ясгсюр(я1, я2)) рг1пгг("Строки олинаковы1п']; ясгсас(я1, я2); ргзпг Х ( 'Вятп", я1]; ясгсру(я1, '"Проверка. 1п'): рг1пст(я1); 11(ясгспг('Привет", 'е')) рггпст("В слове 1"Приветх" есть буква 1"е1" 1п"); 11(ясгягг('Привет", "ив")) рг1псб('В слове 1"Привет1" есть сочетание букв 1'ив1""); гесигп О," Если запустить на выполнснис эту программу и ввести строки "Привет" и "Привет", то на экран будут выведены следующие сообщению длина строк: б б Строки одинаковы ПркветПривет Проверка В слове "Привет" есть буква 'е" В слове "Привет" есть сочетание букв "ив' Обратите внимание на то, что функция всгсвр() возвращает ложное значение, только если строки одинаковы.

Если необходимо проверить, совпадают ли строки мс- „5 жду собои, следует использовать логический оператор отрицания "(". Несмотря на то что в языке С++ для строк предусмотрен отдсльныи класс, строки, завершающиеся нулевым байтом, по-прежнему весьма популярны. Возможно, зто происходит благодаря тому, что они очень эффективны и позволяют программистам полностью контролировать операции над строками.

Однако во многих ситуациях очень удобно использовать класс ввг1пвь :1 Двухмерные массивы В языке С/Сч ь предусмотрены многомерные массивы. Простейшим из них является двухмерный. По существу, двухмерный массив — это массив одномерных массивов. Объявлснис двухмерного массива б, состоящего из [О строк и 20 столбцов, выглядит следующим образом. я ьпс В[101[201; Объявляя двухмсрныс массивы, следует проявлять осторожность. В некоторых языках программирования размерности массивов отделяются запятыми.

В отличие от них, в языке С(С+ ь размерности массива заключаются в квадрат~~ив скобки. Обращение к элемснту двухмерного массива выглядит так; $ с([11[21 Учтите закжс, что отношения "больше*' и "меньше" между строками понимаются в лексикографичсском смысле. Например, значение всгстр("а"."я") равно -31 (те. строка "а" меньше с(роки "я"), а значение всгсвр("я", "а" ) равно 31. Обращто внимание на то, что значение ввгслр("ая", "ял") снова равно — 31, иными словами, функция ввгсвр возвращает разность между АНСИ-колами первых несовпадаюших между собой символов, Собственно, именно так упорядочлваются слова в адфавитном порядке. — Прим. лед.

Часть [. Основы языка С++( подмножество С Следующая программа заполняет двухмерный массив числами от 1 до !9 и выволит их на экран построчно. сзпс1иг)е <эсс)зо.]з> Епс лзазгз(ззозс)) з.пг. е, з., поза[3) [4); Еос(е=оз с<3; +во) Еос(Е=:Оз з<4; ++з) полз[с)[Е) =. (с*4)+Е+Зз / Вывел на экран "/ Е (С=оз С<Зз ++С) ( Еос(з=оз Е<4/ ввз) рззпЕЕ("азс) ", поп[с)(з.))з рскпсЕ("'зп")з ) гесисп Оз ) В данном примере элемент пша[О1 [О] равен !.

поза[с] [1] равен 2, поза[о] [а] равен 3 и тл. Значение элемента поза[а] [з] равно 12. Массив пша можно изобразить следующим образом. пиза[с] [4] О 1 2 3 О 1 2 Двухмерный массив хранится в виде матрицы, в которой первый индекс залает номер строки, а второй — номер столбца. Таким образом, при обходе элементов в порядке их размещения в лама~и правый индекс изменяется быстрее, чем левый. Графическая схема размещения двухмерного массива в памяти показана па рис. 4 2 Рис. 4.2 Двухмерный массив Глава 4.

Массивы и строки Объем пал~яти, занимаемьгй двухмерным массивом, выраженный в байтах, залается следующей формулои: количество байтов = количество стирок количество столбцов"в1аеоа(базовый тил] Считая, что целое число занимает 4 байт, можно вычислить, что для хранения массина, состоящего из 1О строк и 5 столбцов, необходимо 10'5'44 200 байт. Если двухмерный массив используется в качестве аргумента функции, то в нее передается только указатель на его первый злемент.

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

уоЫ гцпс1(1пе х[][10]) ( Компилятор должен знать количество столбцов, иначе он не сможет правильно вычислять выражения, подобные следующему: $ х[2] [4] Если бы длина строки была неизвестна, компилятор не нашел бы начало третьей строки. Рассмотрим короткую программу, в которой двухмерный массив используется для хранения оценок, полученных студентами. Предполагается, что учитель преподает в трех группах, в которых учатся не более 30 студентов. Обратите внимание на то, как происходит обращение в массиву дтайе в каждой функции. /* Простая база данных, содерхажая оценки студентов. */ а1пс1ц((е <ят([1о.Ъ> $1пс1це]е <стуре.Ъ> $1пс1цйе <ате]11Ъ.Ь> аде11пе СЬЬЯЯЕЯ 3 абеяьпе СЕЛПЕЯ 3О 1пт дтае]е(С?АЯЯЕЯ][СЕХ)ЗЕЯ]; чо1([ епсет дтайее (чоЫ); ьпе дет дтае]е(1пе пып); чоЫ <)1ер дтадев(ьпт д [] [СЕАПЕЯ] ! 1пс паьп[чоЫ) ( спет сЬ, вот[ад); гот(;;) бо ( рт1птг("(В)вод оценок 1п"); рт1птг("(п)ечать оцеиок1п")г рт1птг("(К)оиец1п"); дете(ает); Часть!.

Основы языка С++: подмиожеспю С сЬ = соцррет(*яхт)з ) и?х1е(сь!='В' са сь!='и' аа с?з(='к')з яихесп(сЬ] ( саяе 'В': епеег дтайея()з Ьтеа]сз саяе 'П': сЫяр огас(ея(дтаз?е)з Ьгеа]хз саяе 'К': екз.с(0] з геецтп Оз ) /* Ввод оценок. "/ чоЫ епеег дгаг(ея(чоЫ! ( з.пе Гог(е=Оз СкСЬАЯЯЕЯз Е++) ргхпст["С1аяя Ф Ъг)з1п", с+1)з тот(х=Оз х<ОЕЛПЕЯз ++1) дгае)е(с)(х] = дес дга((е(х]з ) /" Считывание оценки. */ зпе дее дгаг)е[з.пе пцк0 ( спат в(00)з ргхпсг('Введите оценку студента а абз1п", очи+1) десз(з)з геецгп(аеох(з)]з /* Вывод оценок. */ чоЫ з)хяр дгае)ея(хпе д(](СЕЛВЕЯ]] ( Ые е, з.; Гог(е=оз С(СЬЛЯЯЕЯз ++С) ( ргхпей(?Группа а Ъз?з 1п", С+1)з Гог(х=Оз х<ЯВЛОЕЯЗ ++1) ргхпеО["Студент аае) хз ЪФп", 1+1, д(Е)(х)) ) Массивы строк Массивы строк используются довольно часто.

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

В приведенном Глава 4. Массивы и строки иижс фрагменте объявлен массив, состоящий из 30 строк, каждая из которых может содержать до 79 символов и нулевой байзз й с?заг ясг аггау [30] [80] з Доступ к отделыюй строке весьма прост: нужно лишь указать левый индекс. Например, слелуюший оператор применяет фуикцию деев() к третьей строке массива вег аггау, $ деея(ягг актау[2)! С функциональной точки зрения этот оператор эквивалентен такому вызову: й дега[васк аггау[2)[0]); И все же первая из этих форм записи предпочтительнее.

Чтобы лучше понять, как устроен массив строк, рассмотрим короткую программу, в которой массив строк используется как основа лля текстового редактора. /* Очень простой текстовый релактор. "/ азпс?цде <яецзо.?з> аг?еГзле МАХ 100 ас?егъпе Г.ЕИ 80 с?заг Еехг[Ь?АХ][ЬЕИ] зпе зп[ И) [ гедзяеек зпе е, з, Зз ргтпет("для выхода введите пустую строку.'зп") Гог(г.=Оз г<илхз е++) ргзлег("Ъг?з ", е); деев[гехт.[е]); гг(!"еехе[е]) ?зкеа)гз /* выход */ ) Лог(з=О? з<гз г++) ( ?ог(З=Оз Еехг[з][]]з б++! рисе?заг(гехг[з][З]); риеспаг('зп')з ) геецгп Оз ) Ввел текста в эту программу продолжается до тех пор, пока пользователь ие введет пустую строку.

Затем все строки выволлтся иа экран по очереди. ~~ Многомерные массивы В языке С/С++ массивы могут иметь больше двух размерностей. Максимально допустимое количество размерностей заластся компилятором. Об(ций вид объявления многомерного массива таков. азии яма[Размер!] [Размер2] '(Разиерэ)., '(Разиер]т] Массивы, имею(цие больше трех размерностей, используются редко, поскольку оци занимают слишком большой объем памяти. Например, четырехмерный массив силзво- Часть!. Основы языка С+за подмнюжвство С лов размерностью 10кбк9к4 занимает 2160 байт. Если бы массив содержал лвухбитоные целые числа, потребовалось бы 4320 байт.

Если бы элементы массива имели тип поп)з1е и занимали бы 8 баит каждый, то для массива потребовалось бы ]7280 байт Размер памяти, выделяемой для массива, экспоненциально возрастает с увеличением количества размерносзей, например, если к предыдущему массиву добавить пятое измерение, в котором располагается 10 элементов, то для него понадобилось бы ]72800 баит. При обращении к многомерным массивалз компилятор вычисляет каждый индекс. Следовательно, доступ к элементам многомерного массива происходит зна нггсльно медленнее, чем к элемезпам одномерного массива. Передавая многомерный массив в функшзн, следует указывать все размеры, кроме первого.

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

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

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

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