Главная » Просмотр файлов » Искусство программирования на Си

Искусство программирования на Си (984073), страница 34

Файл №984073 Искусство программирования на Си (Искусство программирования на Си) 34 страницаИскусство программирования на Си (984073) страница 342015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Он также з вов панерхноста (точность составляет Рзгзе = Оьйееоаеа(ььве, ИОЬЬ, МОЬЬ)! содержит небольшое количество леревень (в которых нет првмерно +/- 30 мель) . мйгуе(ИОЬЬ ! 1деев(впссег международных аэропортов). Элементы этого файла «/ в[аеас Впу[ег, мйгье(ОЬСеедехС(ььве> !« МОЬЬ> разделяются запятыми. 1пе Са1согеаСС1гс1ео1веапсе(С1ТТ «С)еу1, С1ТТ Гр>) ( *Сгеу2> ( ЬЬвС = ОЬСеенехе(ь[ве>! /* Стандартные заголовки Овйла вырезаны «/ ( 11(рагвеСгеу(ьтйсвс[су впу[ег) ) весопд = ОьсеСОаеа(Ь1ве, ИОЬЬ, МОЬЬ)! гегагп (1пе)(3956.934132687 * ( 41пс1псе "0111вс.й' асов((вьп(ссеу1->Ьаесеасе) * гу(++Мпнс111ев >а МахСШев) Озвеапсе вгп(С[еу2->Ьаезапсе)) + ( Са1согеаССггс1еогвеапсе(Рггве [Се1«ае Р1 3.14159265358979323846 ([сов(сзеу1->Ьаезепде) +«Махс111ев! Еесопд)! сов(ссеу2->Ьаесепсе)> * НахСШев *а 3; Страде! вегасе Сгтт ((сов[Сзеу1->Ьопд)ваде) * МахСШев /= 2; рггпСТ( ав — ав: 80 нз1ев.1л", ( сов(сзеу2->Ьопдсспде)) + 81гве->ссеуване, весопа->С1Сунане, 30> (згп(сгеу[ >Ьопд1еаде) Тенр Органа«ах««а банан« ЩЯ— « Часть и Прха«ыа абстракт«ее а Циклические списки мент, но при необходимости может поворачивать и на а пиклнческий список позаботится о себе сам.

Заглав- применять; следовательно, вставлять новый элемент большее число элементов. Эти врашения осушествляют- ньш у «ел позволяет также хранить дополнительную будем после этого последнего элемента, так чтобы ука- Цнкличсские списки — это одно- или лвусвязныс спис- ся очень быстро, зак как в действительности данные в г«элемен а быч нацелен теперь на информацию, связанную не с отдельным элементом датель г«ет текушего элемента ыл нацелен теперь на ки, которые, если можно так выразиться, гоняюзся за памяти нс перссылакпся — требуется только присвоить списка, а со списком в целом.

Мы воспользуемся этим, новый элемент. своим собственным хвостом А указывает на В, В ука- новос значение указазслкз. На рис. ».4 показано, как с чтобы хранить счетчик числа элементов в списке. ассмотрим д авление в список вто о о элеме зывает на С, С указывас( на Р, О указывает на Е и Е помощью указателей списка образуется кольцо, при р устоя д авить его как штеп- указывает на А. Онн лучше всего подходят лля никли- этом каждыи элемент списка хранит указатель на дан- Листинг 11.12. Библиотека циклического списка.

час, когда в списке только один элемент, Сштевт->Ргеч ческих данных. Например, рассмотрим расписание дви- ные приложения. Еуребе1 вегасе СЬ 1ТЕИ жсния поезлов с 24-часовь|м периодом (расписание ( новый элемент удет указывать и нггеп- повторяется каждые 24 часа). Если в 9 часов вечера кли- ЗВГЛВВНЫИ УЗЕЛ 1ле Та>П Сштепт->Рген Олнако, если мы примем во внимание сит спрашивает, какие поезда бутбт оз правляз ься в бли- аггаст СЬ 1ТЕИ 'Реет; Заглавный узел никоим образом нс играет сушссзвсп- — циклическую природу данной ситуации, то увидим, что жайшнс 6 часов, то он, цо-видимому, хотел бы усшл- атгисс СЬ 1ТЕИ «Еехт; ной роли в циклическом списке, но он может в огром- аозб «ОЬ ес>Ы это правильные действия.

шать нс только о тол« поезде. которыи отправляется в роз зес нон степени упростить код программы. В некоторых рс- 51хе 1 Баге; Вот код, вставляющий в список новые элсмснтьс 2>.38, но и о золц которын отправляется в 0»:9. Цнкализациях циклического списка указатель последнсгп > СЬ 1ТЕИ; хьь Сьабб1сет [СЬТБТ *Ь1ес, личсскии список прекрасно подхсынт для пон задачи. элемента направлен на заглавный узел.

Это может дать 1ве Теч, Из-за с«о цин«ичсскон природы в нем отсутствуют пер Гуребе1 атгась СЫБТ обратнын эфФскт и усложнить код. По-видимому, для выи и последний элементы Поэзому' полезно ввести последнего изс««ента как-то более естественно указывать СЬ 1ТЕН «Сеггеат1еее; понятие тскушсй позиции, через котс рук« выполняютна первый элемент, в истинно циклическом стиле. в«ге 1 Иви1сеяаз ся все операции (это хорошо видно на рис. !1.4). Если Мы будем использовать заглавный узел (листин~ > СЫБТ; зае аеаа11 = СЬ БОССЕББ; нхжич>1(>1 элсн««Взад 1(а«ХР«титаса нс,на гскУп1су) позиции, то ..., ' за еав Прет ты е ад<тракт нее струна урн данньн аввегг(Ьзас ( ИОЬЬ] Иева11 = (нРеас)(ТЫа1ьеи->тед, ТЫагтеи->ОЬ)есг Агдв); Оргонитаннданнь> Часть и — Глава 11 Восстановление и обновление данных 11(шяг->Ипи1сеиа > О) Ывс->Сеггеас1сеи = Иехс1геиз ( Иевстгеи->Ргет = Ргетгсеи Если леы ограничимся восстановлением только элсмсн- 11(Р1асев < О) Ргет1сеи->Иехг = Иевг11еиз гсг(тывггеи = Ьзвс->оаггеашгеи, з - ОГ за, находяшсгося на текущей позипии, то сделать это ( О == Иева11 аа иа1ыр1е = (ывг->ивв1геиа — 1 1 < (1ае)Ыег->Иии1сеивз можно просто.

Необходимо только возвратить указатсль Р(асев) l / ггее(ТЬ1в1геи); ТЫвггеи = Тйгв1геи->иехг, з++) на данные зскушсго элсмснта. Обновлснис данных тоже является очень легким делом. В данной главс уже рас- Р1асев += ие1с1Р1е * Ывг->иви1сеив; — Ь(аг->Иви11еивз сматривалась обшая идея; чтобы увидеть исходный код, ) ) заглянитс в файл сН(я(.с на %сЬ-сайте "ДиаСофт". Р1асев Ь= Ывс->Иви1сеиа. гетега Ое1етед; ) Вращение списка гетега Иева11, Мы возвратили целое число, чтобы указать, дсй- ) Эффективное врашснис списка является интересным Р1асев = Ьзвг->Иаи1теив — Р1асеа; СЕ()евтгоуп тривиальной.

Зго один из тех редких слу- РЕШЕНИЕ ЗадаЧИ ИОСИфа личсский, у не~ о есть и<которые обшис свойства с арифметическими опсрапиями по модулю. Пусть нам гребу- Ывг->Сиггеасгсеи = Ьгвс->Сеггеасггев->Рген; акта, что я действительно стрсется повернуть список на Р мест и в списке имеется )Ч ) мился к тому, чтобы оператор управления циклом выных для нашей демонстрационной программы будет элементов. Первая оптимизация, которукз можно выполнить, — уменьшить Р заким образом, чтобы оно нахо- тор, лостойный этого звания, удалит оператор соп1!пас.

лилось в диапазоне от 0 до (х(-(. Для этшо нужно ис гог(з = О- з. < Р1асев з++) Иосиф (Р(ат(цз )озсрйцз) (37 н. э. — ок. 100 н. э.) был Органиэация данны» При«ение ай а)рикнэные енэр> кнэуры донных ~$~~ 1 Часть Н Глава 11 Рассмотрим круг вз И элементов. Испи удалвть Х-й элемент, то останется И вЂ” 1 элементов. 1((КХЬТ КОССКОК == Вело>Г> 'коли эту процедуру повторять, то действвтельио останется только одев элемент. Иаков? 'Ответ дает эта программа. вй>1е(С>гс1е.дов1севн > 1) ВОЬЬ ськогаге(ссггс1е, х); рг1пс(('Вевоч1пд эсеи $1о.1п", сваг **Техс; «(опн1дпед 1опд *)сьдегвага(ьсггс1е, сваг Ьоутег(32)) ИОЬЬ, сваг »епдр) ИОЬЬ)); СЬ|КТ Сггс1е = (0)) сьое1еге(ссггс1е); гпс Вевп>Г = КХ>т ВОССКВК) э'» Коли удалвть одне элемент, то текуаим станет следувииа за вим.

Зто сбивает вав счет опвьдпед 1опд И; еа едвнацу, поэтому лонервеи круг назад на одев узел (элемент), нпн1длей 1опд х) »/ ппнгдпед 1опд СЬВосасе(ЬС1гс1е, -1); > 1 (твкс = упс ; »тЕХГ )и ИОЬЬ) ++тЕХГ> ( рг>пс(( Тйе 1аас эйев гв $1о.1п роса(*Техс); *(спв1дпед 1опд »)СЬСесцаса(ЬС>гс1е, ВОЬЬ, ИОЬЬ)); рога(">пкпн ваву ггевв гп гйе ггпдг"); 11(идьь == удегв(ппутег, в1геоу ьоутег, вгй1п)) сьцевггоу(ьс1гс1е); Пр«- емс "р ' и р)ктЗрнданп ИВЮЮРВ ) Глава 11 Ор~анизпциз диниче чвс\ъ Й няются в калькуляторах с обратной польской записьнз нового типа ВТАСК и адрес этой структчры перевалим бклут зависсзь от библиотеки стека, повторно исполь(Кетеглс Ро)В)з )л)о)аг)оп) при анатизе и вы шслснии вы- в функции, которые булут осутцесгвлять занесение и из- зуюшей структуру Б1Л.1ЯТ.

В настояший момент зта ражений и во множестве прилладныл задач. В качестве влечение данных. ился кажется прекрасной, но. возможно, через год мы ) примера программы рассмотрим одну ~акую задачу. кое-что усовершенствусм, и зогла все этн прикладные Ото было слелано с чудесной легкостью — пришлось большинство стеков, которые мне встречались в СОЗДВИИВ СТВКВ программы прилется перекомпилировать и перекомпо- только вызвать кол, который был написан раньше. Как кодах программ, были реализованы плохо. Код почти Наш стек очень простой (листинг ) ).) 3). новывать.

а это плохо (Если мы изменяем содержилюе можно было зал~етитсл был определен новыи набор л~акнеизменно был написан как часть приложения, а нс как структуры ЯТАСК, то это подразумевает необходимость росов контроля огвибок в кодс стека, так как мы не хоавтономная, повторно используемая библиотека (По- Листинг 11.13. Создание стека. перекомпиляции всех программ, используюших функ- тич. чтобы пользователи-программисты были вынужлевторное использование кола — это Свяшенный Грааль Страде( вегасе втаек ции из библиотеки стека.) Необходимость рсдактиро- ны писать код, зависяший от того, что в определении языка С++.

Поклонники этого языка постоянно пыта- вать при этом и прикладной код была бы весьма неже- стека была использована структура Б1Л.)БТ. Оператоются найти примеры повторного использования кола, )ьвпдес воеввс лательнай и потенциально лорогои. Однако если чы ры контроля нс гарантируюз правильную иниципчизано, похоже, никак не могут ил найти. с другои сторо- зпс сьесктпсс); просто включаем файл $П)вг.й в файл втасй.й, то избега- цию стека (в частности потому, что они исчезают, если ньц приверженцы языка С в течение многих лет повзор- ем этой проблемы и ограждаем пользователя-програм- )Ч)УЕВ))б определена), но они дают нам разумную стено исполыуют коды программ, делая это без особого $ьы$т *всесквсг) миста от ненужной информации о том, что в реазиза- пень зац)иты от случайной небрежной инициализации.

шу ма ' у них п)зост о нет никакои пот )зебност13 г)ломко вазе с вел)сева ции стека используется код списка. кричать об этом. Но по какой-то нспонятнои причине Поэтому с нскозорой неохотой выбираел~ второй ИЗВЛВЧВНИВ ЗЛВМЮНТОВ эта блестяшая история повторного использования про- 111пдес ввввва вариант — включаем зВ)з(.Ь в в)асй.й, но, по крайней П оцс нз„кенеш,я элен,ентов так же п с как п о грамм, по-видимому, нс включает в себя стеки, по край- зпс ейескзп112) лзере, мы испьцываем Уловлетворснис от сознаниЯ того, ~ Код е написан бо е ч наполо)епдззв Пргктие ибгтратпнне гтрукттте Эанннт Глава 11 Органнзацин даннпа ! ЧастЫ! сЬаг *р; /* тьпй а */ сЬаг 'О; /* Рыли > */ геелгп Беаск->илвгеевгы сваг *еаггау = ИОЬЬ; /и файл ВТНЬ е/ Сохранение природы стека 1пс Солпс = О; [пс Еггог; 1лс гоиа; 1пс ЕЫпгое; вевсру(ОЬ)есс, р, 5гхе); ) е1ве ( йеап11 = БТАСЕ РОР РА1ЬОВЕ [лс Бсаелп ЕЕЬТ БОССЕББ Вепл11 = БТАСЕ ЕНРТТ геелгп йепл11.

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

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

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

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