А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев - Алгоритмы и алгоритмические языки (1113416), страница 6
Текст из файла (страница 6)
Йтчк11НВХ вь 6. 1ЗЯИСЕНВЫ )О =-- ), 6 - 1,,~ ~ 1 — )л 1"-Хь 11: ) Рскурсивно оиисззт фтик11И10 Вычислсиия и-ОГО числ ' Фиб11НЗ~1 1И и с сс поыои1ыо Вьвчисли Гь 1О-с числ т 111Ибоиач"П1, 5.3.1). Пусть и — цслос исотрицйвсльнос число„". Рскбрсивио ~ПИСЙТЬ фувкцик1 от пзрзмстрз НЗХОДИТ: а) сумму циф)з этОГО числа, О) максимальиб10 цифру В дсся1тпи10Й записи зтОГО С) СТЗРЦ17'ЯЭ 1СЗМРК1 ЛСВУГО) Циф1ГУ В ДССЯТИЧИОИ' записи зтоГО числа.
5.3.10. 11Й стзнДЙртном потокс ВВОДЗ ЭЙДЙП тскст",-' Гпослсдоватслы111сть символов. Эакзнчива1оьцзяся точкой„::; Гочка В тскст ис Входит), Рок)рсивио описаТЬ ф)икци10,с КОТ11РЗЯ ПОДСЧИТЫЬЗСТ КОЛИЧССТВО ЦйфР В ДСД1ПОМ ТСКСТС. 5.3.11. ПРОГрзммз. Б стзидартпоы ПГ1токс Ввода." '1адаСГСя П0СЛСЛОВЙТСЛЫ1ОСГЬ НСНРЛСВЫХ ПСЛЫХ ЧИССЛ, Эа.:.: которой слсд",;.ст О. Выв1".Сти сизчзла Всс 011исцзтсльньаэ числа э1Т111 по лсдэвт1сзп ГГЗСП1 з Йтсм — Вс1. ИОДОЯ01тсл1иы1', ГВ'".
ЛЬОООМ ПОРЯДКС). 5.3.12. Нз стаидзртиом потокс ВВОДЗ зздзнй форм;,'лй, СЛСДУВЭП1СГО ВИДЗ: сфарв1ува>::== <1111ф)ЭП> 1 бкфвриуяа> с ЭИПК '-'фарвчряа-') ьзз11ПК>::=- .-Г 1' -', >::-- О ', ) 13! 31 В! 51б ~ ",, 'Д' Р (3дномс1риьвс ызссив1Я. Опрслслснис и ииипизлиззпив МВССИВЙ, ДОС13» Г ' Ы, и:;;и к злсмснтйм массива. Укзззтсли и массивы, ифмстикз. 1)срстз 1Й массива В Гзчсств1.. пзрзмстрй в фтьпп1иис 3здзч4, 01зрсдслсиис одномсриоГО ~асов~а имссз Вид: "Г11П С .1ЫЯ> 1СИОЛИЧСО ГВО ЗЛСМСНГОВ МЗ~ ... В„;1> ) , ГДС СтИП> ЗадзЕТ тпп элсыснтОВ Массиаа, пРН этом вавкио поыпить, 'по Всс элсмсить1 мзссиВЗ имстот Один и тоГ ьчс тип. 11ри рззмс1дсиии В 1ьэмяти Всс элсмситы массива рйсполйГзвпся подряд.
Дост)п к элсмситу массива ОС'; 1ПССТВЛЯСТСЯ ПО ОГО ИИДСКС5, В Ь"1ЧССТВС ИНДСКОЙ ИСПОЛЬЭРКГГСЛ ПСЛЬЬЭ НСОТОИПЙТСЛЬИЬГС ЧИСЛЯ, ИИдСКСация элсмситов массива иачинзсГСЯ с О. Таким образом, в массиве элсмснтОВ индсксапия элсмсп1ОВ измсиястся В дизпаз01ГЗ О» О ДО 1; —;, 1-)апримср, опрсдслсиис пслочисл1зппоГО массива х из ГРСХ 111СМСНТОВ: У/ злсм011ты х1О), х!31~ чвод маоснва 2/ а 01 = 1, З11) = 2, Ь~10) = ( )О) УУ Ь!О) —. 1, Ь)31 =. 2, Ь~ 5) =-.
— 3 11С указанные в инициализации ялсмснзы массива,в» ОЙцсм случае не получа1от 11икзкого нзчалызого знз1снии',::; Исклкзчснис составлякп ГлООзльныс массиВы, Всс 11лсыснть1,' которьья по умолчаниьо иннциализиру1отся нулсвьщф зна'1енияыи при Определении массива. КОЛН11сство злсмснтов массива может обьявляться с': помоп1ыо константы, В атом случае Рскомсндустсв~ испОльзОВать кОнструкциго Ойппь гтапримср: ) 001' 0.12ГЯ абъчвслские кокотакты ВУ12 522.':: .":пс Ьпйбе ~В11Г 012Я2); Выход за грзнипу массива ооычно нс ко11тбтолируетсдч) компнлЯтором. а обнаруживается только на зиле Выполнения';::.4 про1раммы.
Во избежание подобной Ошибки 11рограммис~"', должен контрблировать даннуго ситузци1о самостоятсльно. ВО Всех прйвсдс1ьных выше примерах Размер массива ' задается констаптои, Од~~ко стандз1п (:,и-99 допускает также=, использОВьяпгс массивов переменной Длины В качестве". локальных массивов. ) )Впримср, ввод Цслочислспно~ О . массива из и злемснтов В стандарте Си-99 рсклизустси СлеяТУ1ОП1ИЫ фраГМСНТОМ: П1 у я к Пол чкс'"~ ьп'Смак 'ов маоонка 'пт х',п11 3а0111ча 1 Ъ кажитс, какому элементу массива б"'дст псвоено значсннс "' 2, а такжс значение псрсмснной 1 после Выполнения слс1111ОИ1сго фрз1мсп Га программы; ЬП, 1'д111с1пФ2 постфпкс1гая Опсрация 1': уВслнчит значение переменной < носяс сс нспользОВзиия В Выражении.
(",лсдоватсльпо. ОтВст: З18) = 1, 1 = 9, 31д111д11 2, 1)з стандартном потоке В~ода задзп текст, состтяш1ий из латинских букв и цифр н оканчиаа1оп1ийся Тоги(ОКЬ Ва СТандарй1ЫЙ ПОТОК ВЫВОда ВЬЬВССТИ цифру, нзи11011сс час1'О ветре'1з1ОП1укзся В тексте (сели таких цифр Несколько, Вьгвести л1обу1о из них).
101я решения задачи сформируем массив счетчиков ВХОЖ:1СНИЙ Циф)1 В ЗЗДанныи тсКст, ГДС В 1 "ОМ злсмснте М11ссива Оядсм 1икзпливзть количсстВО Вхождсни11 В ескст цифры со значепием я. Если символьная переменная с содержит цифру. Тогда Вырзжен11с с — ' 0 ' Вычисляст ЦС11О'1нслснпос зпачсннс Втой цифры и, слсдоВатсльно, индекс соотвсгствуюнтсгс1 счетчика в массиве.
С."формировав массив счс1чиков, найдем индекс ~ 1тб л1ах) максимального лсмснтз в ятом массиве, Тогда Вьгрзжеиис З.пб Мак 1 ' 0 "бу11с' определять искомуго цифру. "-' 1: с 1 ас1е < В ЬОЬ1 о . Ь> л1аз и ('встс) ( (.йа НЗЦ1СБ 1 ' 01; ~ 1 массив сиР".твидов уу нннцналнвацмл массива сметзмнсв 1от (з,п( .'.' =01 1 < '0; х.1+) бхсзь Вв (11 - 01 /у в вол д ансьза х формирование массьтВ со вт с," у у очерелнозв с1й/Вол Ы11"' 1.е ( (с --- дсбс11ал () ) ! = .Ьй (с >= 'О' ай с <-- '9') ( ++О~Й1хсв1с — '0'.(; l / понсе индекса 1ьа ксммальпсзпс алеыннт® Ьгс азах = Охбхта(О), 1Г16 п1ах =- О; (ЗПС 1 =-" ° 1 К,О.
ТЙ !Г)1дзтз (х) > пан) ( Мак =- ЙтОТСЗ (1.) 1 ЗПЙ ЛАК =-. З) Рлзпт~ 1"'Йс,п", з11с(:лак + 'О') ЛО1:11тп О; ИмЯ массива Является константным указателем на( нулевоЙ злемент массива, т.е. имеет тип: хпс сонат; 14зменять значение такоГО указателЯ ноль'ЗЯ, например~ ошибкой было бы написать следукж(ее присванванне. а(т0) ) б)' О,' яддояд(~;1)',*1 - 11011ыясна нвзь нить : у вна нонне конссданзы а (1 1з1 С1 мОжнО установить Ооычный (неконстан1ныЙ) «1Д , аза1ВЛь 1Ш НЯЧДЛО МЯСснаа и ЗЯТСМ ИЗМенятЬ е10 значение ПО .Я1т.мк усмотренн1О.
Иапрнме)х ЬП(: Р ЬЗ '-":= Р' Б резуль1ате указатель р будет указывать на начало (нвлавОЙ 1лемснт) массива в. Для вьн1нслення разм1.'ра памяти (в байтак), необкйднмОЙ для храненнЯ Объекта используетс11 011ерация значеннеь1 вь1раження "з . ООЙ ( к: нпь 1 ЯЛЛЯСТСЯ количество Оайтов, нсобкодимык для разые1пення в пам1пн значенпя указ П1нОГО типа, Выражение в 1. ЯООЙ ( В) . 1лс; нь1я некр1рроЙ переменноЙ возврацьзст ьолнчествс1 Оан10в памяти, отводимых кОмпнлято)зом для кранения персменпо1( а. Для массива а из 1т злемел1тов з.таво».
1а) а1 ВЕС.'= ( ° Тип' ) и ГДЕ с ВН11~ ЗЯДает тиП ЖГЕМ, 1ГГОВ массива 111приьн.р 11рн тсло1вии ч10 (ля ~анення знш1ення 'п1йа::: пв отводится 4 байта памяти, Для Массива а нз прйве.1венн010 вьпле примера а1веав (а) -= з ' вео1 (! «11 ' Я ЙО = 4 '. ".. 0 = 40, ~-.~ ратнтс внимание, что 3:ЗНОЙ (а) Й ззвес(: (р), так 0=- результатом вычисления выражения В 3. вес Й 1р 1 Является размер 1намЯГИ. Отводимой компилятором под укззате;1ь р (под Ооьект упт ), Обьшпо это 4 Оайта. 1(ад указателями определены следуьадие Основные ОНСРаннн; е дсбзаление Б вылитапне Белсчис)ГВББОЙ к«л)с'ГЗБ)ы СРЗВБЕНИЕ (--=-, ! =.„<, Х„Х--, >=), Вььаиталие указателей ОЛБОГО типа.
Нзпрныер: а (Т1)1; :1 В '"Р, Х) а) 8',; з««х —.; а,,'8( ((ри вы«)ислейии Выра)ХСНБЯ Г» "'. 8 адрес, Крала)пийсл 'В) указателе р, складывается сО мваиеивв~ 8'в'.Х«ВОГ«(.'.«)в,, а результате пвлуллем адрес васьм()ГО( «ьа 1 8 (» ('(Ос«)е (ьазымеБОвзивя «1р з 8) в пе()еыениО11 х будет и)з«)СБИВ; ВО«сьмОГО злеыеБ)а массива ( 'й1 81,', ()братите Виимзлйе БСООЯОдимОсть испвль)Овзвия СКОбвк В Вырзжейй)1 (р» а 8|.
Срзвввте: х.=- 'р+ 8; // х =а(«б/ . 8 х = «(р + 8» ' // Х = З«8« АБЗЛОГН«Б)Г) Вырзькеиие р» - "', ГДС ) — БСИОТОраа) БСЛОзислеивзя КОБстаитз, з~ла~~ указатель Ба ь -ый п~ред лх ЗЛСЫЕБТ МЗССИ1КЬ ((ри выпОлнеБББ Оперзпи)з у)«зз«ате)~ передав) зется Бз с«зО)ветствук)ГБес ХО))илеств6, (.(Вприыер, так если указатели р и с( указывак)з Ба злементы МВССБВЗ, .З )1 З«»ГО Л»Е МЗССИВЗ Б ПРИ ЭТОМ НОМСР ЗЛЕМЕНТЗ, На О)ЗБОГО ы(( з«кззывзсз р«. МСБЬ1пе нсмера злемеитз с указателем БОТОрь" ' Праа«',Д««БВО СОО БО)ЛСБ)ЗЕ.
«В '( р(рн вывнтзлип Указателей выиислаетсл рззиссть з«арсе О ,.Ов хрзвя1Пихся В зтих указзте)1ях, квтврзя затем делится Ба ()азь)' .рь О кв Ива,с«ВО «зементОВ массива„рзспОДОкенвых ИСББ(у ЛВББЬВББ указателями. 1(зприыер: Р Б = ат««8'1 и = (йа18! — Зз(011/в(ЗБОГ ()п«с/ %~11«зч~~ 1, ь(тО Будет нзпсча ГВБО В реву«льтз 1е Выпвлй«,*ийя с))еду)О1це)О фрзтментз; с 1««ь Tх, Х рь .= З««).; "!::Х-- - Х - '«.О; при усл1)вни, «ИО перед выпвлие)злам 1)пела)п)Б О указывал нз (« УКЗЗЗТЕЛБ ОДИБЗКОВО1 О ТИПЗ МОЖНО С()ЗВББВЙГЬ И Выл))тать. '.УГБ Опсрзции имеет смысл ВыпОЛБЯть при УслОВии,- '1тО Обв указа1еля указывзьзт на злемеБть) ОДБОГО и ТОГО )ке« 'рх-- .— х — 181 // з13,' = -5«(зх .= Ьа(81' с1»б1*18 интерес предстзвлЯет ВыпОллсвие втврОГО )рв1'.ВЗИВЗИИЯ«ГДЕ СНЗ«)ала ВЫИБСЛЯЕТСЯ ЗБЗБЕБИС ВЬ)раГКЕНИЯ '-' праВОЙ )асти присваиванил 1х — 10 = -51, затем зтО зцйчсцис прнсьйивйстся по указателю рх ( й ~ '.
' -- — 5'), указатель псрсдвиГйстся цй прсдыду)цйи элемент масс ',рх:=- ьй ',6) ), Таким Образом. В ))сзультйтс Выполйей указа))но) о фрагмси!а будет Напечатано: 1)рй псрсдй"!с массива в фуйкцию используе)'ся то, ч . имя мйссл1ва является коцстйнтн1»м указателем ий СГО цулсВО ' элсмспт: п))и указании В качссп)с параметра ймсии массива)я) фуцкцию фйктэп)сскц псрсдасГСК по .'Ицр)сцию э)рт ук)у)йтс 1ззе. )Гопйя йдресй ййчйлй 1011 Облйстй памяти., в которо нйхОдя Гся элсмеиты масснвй). Из типа укйзйтсля тйк извсстио. сколько ысстй зацимйст кйжз1ый элемсцт массиВВ„ ч!О пОзволяст Оорйтиться к ГНОООму элсмеиту массива.
Н' ин~ц)рма)ГИЛ 0 количсстВс элсмсцтОВ мйсснВ;1 тсрястся,':,. ИОэтому разя)ср масси ВВ следует псрсдйвать в функцй10 чсрсв,' 11ОПОЛИЦТСЯЫ)Ы11 ПВРВМСТР. Г1йпримср, рвссмот))ИМ фуЦКЦН)О; ВЬП1ИСЛЕНИЯ СУММЫ ЭЛСМСНТОВ ЦСЛОЧИСЛСЦНОГО МВССИВВ ИЗ П'-', ')лсментОВ. )Хиже привсдсцы два эквиВалентцых Описанйя) ПРОТОТИПВ ЭТОЙ фУНКЦйй; )"11)йа ЭЗ)ГВХ)ЕИРОБ Веезз) Кяйссмцй ;"*,;мий э)п"мецз'Ов Г)сс)ВГ)й )оловииы ььаоомвй с;;,.„:;П) элеменссоц второ)1 половицы ма Гх)цпв эп)1 п)п 4, Описйт'ь фуйкци10 Вычисления скю1я))н01'О "„РОИЗВЕДСЦИЯ ДВУХ ВЕГИЕСтвениых МассИВОВ И;1 и Эяемситов.
!)оп у) ). е пт СЕ) 11...') ))ОНЯТИС СтрЭКи. 1.".п)оковь)Е коцстацты 1СтрОКОвыс л))тсрйлы). Ввод и вьввод строк. работа со с!роками, Зада пв :и) в; Гя()пт .„"1 )От и) .)Дссь 1: — ймя мйссиВВ, при этом цйл1виис квадра1нь1х скобОК: 06ЯЗВТСЛьцо. ) ) С Эц)В 1'ХП11 1 ~ КГ)) 01," Здесь и — укйзйтсль )ца целое 1йй элсмейт массйвй и' йЦДСКСОМ 0). ВЫЗОВ фУН)ЯИН: .1ПП й)16); ХГ1С Х „ "6), ) )0)1 строкой в языке Сн поцимастся )ОС))ЕДОВЙ'1 СЛЬИОСТЬ СИХ)ВОЛОВ„ОКВ1ИЯВЯЮЩйяся сИМВОлОМ с кОдом 6 1 ' ),11 ' ), В языке цет спецнйльцоГО стро)ково10 тйпй, 4~я хрйцсиия строк использу)Отея МасСИВЫ тйпа сийт, в).опе ) 01 йт 0 эеи И х Поэзоя)у 1.Грокй су™, явля)ОГСЯ массивами символов, отлйчй)о)цимися от цых массивов Ооязатсльным пйличисм символа )0 В .""1с строки.