ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ДинамичСскиС массивы Π² Π‘++

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ массива осущСствляСтся ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ массива ΠΈ ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²ΠΎΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ элСмСнта — индСксу. ИндСкс указываСтся Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках послС ΠΈΠΌΠ΅Π½ΠΈ массива. ΠŸΡ€ΠΈ этом нумСрация элСмСнтов массива начинаСтся с Π½ΡƒΠ»Ρ. ИндСкс элСмСнта Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ фактичСскоС количСство элСмСнтов Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ нСпрСдсказуСмыС ошибки Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ДинамичСскиС массивы Π² Π‘++ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ динамичСский массив ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

  • Π’Π’Π•Π”Π•ΠΠ˜Π•
  • Π“Π»Π°Π²Π° 1. ДинамичСскиС массивы Π² Π‘++
  • 1.1 ОбъявлСниС ΠΈ инициализация массива
  • 1.2 Доступ ΠΊ элСмСнтам массива
  • 1.3 Π Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива
  • 1.4 ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы
  • 1.5 Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, динамичСскиС массивы
  • 1.6 ИспользованиС адрСсов ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с динамичСскими массивами
  • 1.7 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ динамичСских массивов с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
  • 1.8 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ динамичСских массивов с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ new ΠΈ delete
  • Π“Π»Π°Π²Π° 2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅
  • 2.1 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, трСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅
  • 2.2 Анализ ΠΈ исслСдованиС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ быстро, Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС развития Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Знания ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°ΡŽΡ‚ врСмя, поэтому ΠΌΡ‹ Π²ΡΠ΅ Ρ‡Π°Ρ‰Π΅ наблюдаСм Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ Π² ΡΠ²Π΅Ρ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ этого Ρ‡ΡƒΠ΄Π° — Π² ΡΠ²ΠΎΠ΅ΠΌ Ρ€ΠΎΠ΄Π΅ Π³Π΅Π½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΡ‚Π΅Ρ€Π° своСго Π΄Π΅Π»Π°. Π­Ρ‚ΠΎ программисты, ΠΈΠ»ΠΈ люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². НС ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΎ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΡ… людСй с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π΄Π½Π΅ΠΌ становится всС большС ΠΈ Π±ΠΎΠ»ΡŒΡˆΠ΅. Π’ ΡΠ²ΠΎΠ΅ΠΌ арсСналС ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ мноТСство языков программирования, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстны.

Одним ΠΈΠ· ΠΌΠΎΡ‰Π½Π΅ΠΉΡˆΠΈΠΉ языков программирования являСтся Π‘ΠΈ++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π‘ΡŒΠ΅Ρ€Π½ΠΎΠΌ Бтрауструпом Π² 1979 Π³ΠΎΠ΄Ρƒ ΠΈ ΠΎΡΡ‚аСтся Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎ ΡΠ΅ΠΉ дСнь. По ΡΠ²ΠΎΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ возмоТностям Π‘ΠΈ++ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ язык Π‘ΠΈ Π²Π²ΠΈΠ΄Ρƒ нСдостаточной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ОсновноС Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²ΠΎ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π² ΡΠ·Ρ‹ΠΊ Π‘ΠΈ++, это большой Π½Π°Π±ΠΎΡ€ встроСнных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π‘ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ язык Π‘ΠΈ++ поистинС Π²Π΅Π»ΠΈΠΊΠΈΠΉ язык для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ старта Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ программирования.

ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅ΠΌΡ‹

курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ язык программирования Π½Π΅ ΠΎΠ±Ρ…одится Π±Π΅Π· описанной структуры Π΄Π°Π½Π½Ρ‹Ρ…. Двумя самыми распространСнными структурными (нСскалярными) Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ массивы ΠΈ Π·Π°ΠΏΠΈΡΠΈ. НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ соврСмСнныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΎΡ‚яТСнии послСдних 40 Π»Π΅Ρ‚. Π’ Ρ€Π°Π½Π½ΠΈΡ… языках программирования всС структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ нСбольшим количСством основных структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… этими языками.

Одним ΠΈΠ· ΠΌΠΎΡ‰Π½Π΅ΠΉΡˆΠΈΡ… срСдств языка Π‘ΠΈ++ ΡΠ²Π»ΡΡŽΡ‚ΡΡ динамичСскиС массивы. Π˜Ρ… ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… массивов Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ хранятся Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉ памяти.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠΏΡ‹Ρ‚аСмся ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ массивов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ прСдусмотрСны с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² Π‘++, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ массивов ΠΈ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² доступа ΠΊ ΠΈΡ… ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ.

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹: ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ тСорСтичСских Π·Π½Π°Π½ΠΈΠΉ ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΡ… массивах, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ практичСских Π½Π°Π²Ρ‹ΠΊΠΎΠ² выдСлСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ динамичСской памяти Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Для достиТСния поставлСнной Ρ†Π΅Π»ΠΈ Π½Π°ΠΌΠΈ Π±Ρ‹Π»ΠΈ поставлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

1. Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ аспСкты изучСния Ρ‚Π΅ΠΌΡ‹: объявлСниС, Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ динамичСскиС массивы, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ, Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ динамичСских массивов Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C++.

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для формирования ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ динамичСского Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ случайными числами ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

3. ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования динамичСского распрСдСлСния памяти Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ…

Π’ Π³Π»Π°Π²Π΅ 1ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ описаниС ΠΏΡ€Π°Π²ΠΈΠ»Π° использования динамичСской памяти, указатСля ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ опрСдСлСния указатСля, способы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ указатСля, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ указатСлями, связь массива с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, способы доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π’ Π³Π»Π°Π²Π΅ 2Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая для цСлочислСнной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, опрСдСляСт срСднСС арифмСтичСскоС Π΅Π΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС.

ГЛАВА 1. Π”Π˜ΠΠΠœΠ˜Π§Π•Π‘ΠšΠ˜Π• ΠœΠΠ‘Π‘Π˜Π’Π« Π’ Π‘++

1.1 ОбъявлСниС ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива

Массив — имСнованная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ дСйствия.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Π΄Π°Π½Π½Ρ‹Ρ…, входящая Π² ΡΠΎΡΡ‚Π°Π² массива, называСтся элСмСнтом массива. Доступ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива осущСствляСтся ΠΏΠΎ ΠΈΡ… ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²ΠΎΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ. ВсС элСмСнты массива относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€.

Использованию массива Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ объявлСниС, Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ΄ массив ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство памяти. ΠŸΡ€ΠΈ объявлСнии массива слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ имя, Ρ€Π°Π·ΠΌΠ΅Ρ€ (количСство элСмСнтов) ΠΈ Ρ‚ΠΈΠΏ элСмСнтов:

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ массив, состоящий ΠΈΠ· 10 элСмСнтов Ρ‚ΠΈΠΏΠ° int:

Π Π°Π·ΠΌΠ΅Ρ€ массива опрСдСляСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ цСлочислСнной константой. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для задания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива (допускаСтся лишь использованиС ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… констант).

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ массива, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ элСмСнты. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния для элСмСнтов массива Q:

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива, Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Ρƒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

1.2 Доступ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ массива осущСствляСтся ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ массива ΠΈ ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²ΠΎΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ элСмСнта — индСксу. ИндСкс указываСтся Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках послС ΠΈΠΌΠ΅Π½ΠΈ массива. ΠŸΡ€ΠΈ этом нумСрация элСмСнтов массива начинаСтся с Π½ΡƒΠ»Ρ. ИндСкс элСмСнта Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ фактичСскоС количСство элСмСнтов Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ нСпрСдсказуСмыС ошибки Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ выраТСниях, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² присваивания, ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°/Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈ Ρ‚. ΠΏ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΠΌ массив Q, состоящий ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов Ρ‚ΠΈΠΏΠ° int, присвоим элСмСнтам Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ всС элСмСнты массива Π½Π° ΡΠΊΡ€Π°Π½.

1.3 Π Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива

На ΡΡ‚Π°ΠΏΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ количСство элСмСнтов массива, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ потрСбуСтся ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НСобходимоС количСство элСмСнтов ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ лишь Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив с Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ большим Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΡΡ‚Π°ΠΏΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ, впослСдствии, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈΠ· ΡΡ‚ΠΈΡ… элСмСнтов. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС массив Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ двумя Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ: фактичСским ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ. ЀактичСский Ρ€Π°Π·ΠΌΠ΅Ρ€ массива — Ρ€Π°Π·ΠΌΠ΅Ρ€, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ объявлСнии массива — максимальноС количСство элСмСнтов с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ЀактичСский Ρ€Π°Π·ΠΌΠ΅Ρ€ являСтся постоянной Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ. Π Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива — это количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Π Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ массива Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ фактичСский.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΠΌ сумму элСмСнтов массива M, ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ фактичСский Ρ€Π°Π·ΠΌΠ΅Ρ€ 100 элСмСнтов. Π Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ Π΅Π³ΠΎ элСмСнтов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Листинг 1.1

#include

#include

using namespace std;

void main ()

{

//ЀактичСский Ρ€Π°Π·ΠΌΠ΅Ρ€ массива М constintphys_size = 100;

//Π Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива М intwork_size = 0;

//Массив M

intM[phys_size];

// ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ количСство элСмСнтов:"; // Π’Π²ΠΎΠ΄ значСния work_size с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ cin>>work_size;

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ work_size

if (work_size<=0 || work_size>phys_size)

cout<< «ΠžΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива» ;

else

{

// Π’Π²ΠΎΠ΄ΠΈΠΌ значСния элСмСнтов массива

for (inti=0; i

{

cout<< «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта «

<< i+1 << «: «;

}

cin>> M[i];

// ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ сумму элСмСнтов массива

intsum = 0;

for (inti=0; i

sum += M[i];

// Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° ΡΠΊΡ€Π°Π½

cout<< «Π‘УММА Π­Π›Π•ΠœΠ•ΠΠ’ΠžΠ’ ΠœΠΠ‘Π‘Π˜Π’Π: «<

}

getch (); // ОТидаСм наТатия Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ

}

1.4 ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

ΠœΠ°ΡΡΠΈΠ²Ρ‹, рассмотрСнныС Π½Π°ΠΌΠΈ Π²Ρ‹ΡˆΠ΅, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС, массивы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив — это массив, элСмСнтами ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ массивы.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив — массив ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов — ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, состоящая ΠΈΠ· ΡΡ‚Ρ€ΠΎΠΊ ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†ΠΎΠ², Π½Π° ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ значСния (рис. 1.1).

Рисунок 1.1 — Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив — массив Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов — ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн ΠΊΠ°ΠΊ мноТСство ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΊΡƒΠ± (рис. 1.2).

ΠŸΡ€ΠΈ объявлСнии ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ измСрСния указываСтся количСство элСмСнтов:

Рисунок 1.1 — Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив массив

Для обращСния ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ порядковый Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡŽ:

1.5 Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, динамичСскиС массивы

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ 1.1 Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.3 курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² Π‘ΠΈ++ массивы статичСскиС, ΠΈ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ задаСтся ΠΏΡ€ΠΈ описании. Π­Ρ‚ΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π·Π°Ρ€Π°Π½Π΅Π΅ нСизвСстСн Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ массива.

Π’ Π‘ΠΈ++ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ динамичСскиС массивы — массивы ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ - пСрСмСнная, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся адрСс памяти, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ хранится ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠŸΡ€ΠΈ объявлСнии ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ всСгда указываСтся Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ адрСсу.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ описываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

type * name;

Π—Π΄Π΅ΡΡŒ name — пСрСмСнная, объявляСмая, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. По ΡΡ‚ΠΎΠΌΡƒ адрСсу (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ) Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° type.

НапримСр:

int *i;

ОбъявляСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (адрСс) i. По ΡΡ‚ΠΎΠΌΡƒ адрСсу Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ пСрСмСнная Ρ‚ΠΈΠΏΠ° int.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ i ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… int.

float *x,*z;

ОбъявляСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ x ΠΈ z, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° float.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ * ΠΈ & ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с указатСлями

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡƒΠΊΠ°Π·Π°Ρ‚Слями Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ & ΠΈ *. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ & Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ адрСс своСго ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

НапримСр, Ссли объявлСна пСрСмСнная a ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

float a;

Ρ‚ΠΎΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

adr_a=&a;

записываСт Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ adr_a адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a, пСрСмСнная adr_aΠ΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Ρ‚ΠΈΠΏ float. Π•Π΅ ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

float *adr_a;

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ * выполняСт дСйствиС, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ &. Она Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, хранящССся ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ адрСсу.

НапримСр, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

a=*adr_a;

записываСт Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ a Π²Π΅Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, хранящССся ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ adr_a.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ присваивания ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ указатСля ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Если ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

#include

#include

int main ()

{

float PI=3.14 159,*p1,*p2;

p1=p2=&PI;

printf («ΠŸΠΎ адрСсу p1=%p хранится *p1=%gn», p1,*p1);

printf («ΠŸΠΎ адрСсу p2=%p хранится *p2=%gn», p2,*p2);

Π’ ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹: вСщСствСнная пСрСмСнная PI=3.14 159 ΠΈ Π΄Π²Π° указатСля Π½Π° Ρ‚ΠΈΠΏ float p1 ΠΈ p2. Π—Π°Ρ‚Π΅ΠΌ Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ p1 ΠΈ p2 записываСтся адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PI. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ printf выводят Π½Π° ΡΠΊΡ€Π°Π½ адрСса p1 ΠΈ p2 ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ, хранящиСся ΠΏΠΎ ΡΡ‚ΠΈΠΌ адрСсам. Для Π²Ρ‹Π²ΠΎΠ΄Π° адрСса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ спСцификатор Ρ‚ΠΈΠΏΠ° %p. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… p1ΠΈ p2 Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ адрСса, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ хранится вСщСствСнная пСрСмСнная PI=3.14 159.

По адрСсу p1=0012FF7C хранится *p1=3.14 159

По адрСсу p2=0012FF7C хранится *p2=3.14 159

Если ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Ρ‚ΠΎ ΠΏΡ€ΠΈ присваивании значСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ указатСля Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². Π‘Π΅Π· прСобразования ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ void *. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠΊΠ°Π·Π°Ρ‚Слями Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

#include

#include

int main ()

{

float PI=3.14 159,*p1;

double *p2;

//Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ p1 записываСм адрСс PI

p1=&PI;

//ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° double присваиваСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ссылаСтся Π½Π°

//Ρ‚ΠΈΠΏ float.

p2=(double *)p1;

printf («ΠŸΠΎ адрСсу p1=%p хранится *p1=%gn», p1,*p1);

printf («ΠŸΠΎ адрСсу p2=%p хранится *p2=%en», p2,*p2);

}

По адрСсу p1=0012FF7C хранится *p1=3.14 159

По адрСсу p2=0012FF7C хранится *p2=2.64 2140e-308

Π’ ΡƒΠΊΠ°Π·Π°Ρ‚Слях p1 ΠΈ p2 хранится ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ адрСс, Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ, ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° *float адрСсуСт 4 Π±Π°ΠΉΡ‚Π°, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ *double — 8 Π±Π°ΠΉΡ‚. ПослС присваивания p2=(double *)p1; ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ *p2 происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, хранящСйся ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ p1, дописываСтся Π΅Ρ‰Π΅ 4 Π±Π°ΠΉΡ‚Π° ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ *p2 Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ‚ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ *p1.

#include

#include

int main ()

{

double PI=3.14 159,*p1;

float *p2;

p1=&PI;

p2=(float *)p1;

printf («ΠŸΠΎ адрСсу p1=%p хранится *p1=%gn», p1,*p1);

printf («ΠŸΠΎ адрСсу p2=%p хранится *p2=%en», p2,*p2);

}

ПослС присваивания p2=(double *)p1; ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ *p2 происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, хранящСйся ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ p1, выдСляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 4 Π±Π°ΠΉΡ‚Π°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈ Π² ΡΡ‚ΠΎΠΌ случаС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ *p2 Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ‚ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ *p1.

ΠžΡ‚ΡΡŽΠ΄Π° Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄: ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ присваивания. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ опСрация * Π½Π°Π΄ указатСлями Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ адрСс, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ значСния.

Если Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

float *p;

Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ p Ρ…ранится адрСс, Π° Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции *p ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, хранящССся ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ p.

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°

float p;

Ρ‚ΠΎ Π΄Π»Ρ вычислСния адрСса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция &p, Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ p Π½Π°Ρ…одится вСщСствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ адрСсами.

Над адрСсами Π² ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

— ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;

— Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ»ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Ρ‚Сля Ρ†Π΅Π»ΠΎΠ΅ число.

Однако ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности. Рассмотрим ΠΈΡ… Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

double *p1;

float *p2;

int *i;

p1++

p2++;

i++;

}

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ p1++ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ адрСса Π½Π° 8, опСрация p2++ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ адрСса Π½Π° 4, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ i++ Π½Π° 2. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ адрСсной Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

— ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ увСличСния ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (для p1 — это double, Π΄ Π»Ρ p2 — float, для i — int);

— ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ссылаСтся Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°;

— ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ p1=p1+n, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ Π½Π° n ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°;p1+n ΠΊΠ°ΠΊ Π±Ρ‹ адрСсуСт n-ΠΉ элСмСнт массива, Ссли p1 — адрСс Π½Π°Ρ‡Π°Π»Π° массива.

1.6 ИспользованиС адрСсов ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ массивами

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Π‘ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ участок памяти (динамичСский массив) Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1. ΠžΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ p) ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

2. Начиная с Π°Π΄Ρ€Π΅ΡΠ°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ calloc, malloc ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ участок памяти ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ПослС этого p Π±ΡƒΠ΄Π΅Ρ‚ адрСсом ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ участка ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти (0-ΠΉ элСмСнт массива), p+1 Π±ΡƒΠ΄Π΅Ρ‚ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ — ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ участкС памяти (1-ΠΉ элСмСнт динамичСского массива), &, p+i являСтся адрСсом i-Π³ΠΎ элСмСнта.

НСобходимо Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ участка памяти.

К i-ΠΌΡƒ элСмСнту динамичСского массива p ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… способов *(p+i) ΠΈΠ»ΠΈ p[i].

3. Когда участок памяти Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ free (), ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ delete.

ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ описаниСм Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, рассмотрим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ calloc, malloc, realloc ΠΈ free ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new ΠΈ delete.

ЕдинствСнным ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ malloc являСтся Ρ†Π΅Π»ΠΎΠ΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ выдСляСмого участка памяти Π² Π±Π°ΠΉΡ‚Π°Ρ…. Ѐункция malloc Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±Π΅Π·Ρ‚ΠΈΠΏΠΎΠ²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (void *) Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ участок памяти. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ malloc ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

void *malloc (n);

здСсь n ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ выдСляСмого участка памяти Π² Π±Π°ΠΉΡ‚Π°Ρ…, функция Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL, Ссли Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ участок памяти, ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ.

1.7 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ динамичСских массивов с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ДинамичСский массив — массив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выдСляСтся Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, объСм памяти, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, задаСтся Π΅Ρ‰Π΅ Π΄ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ° компиляции посрСдством объявлСния этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Если ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСизвСстСн Π·Π°Ρ€Π°Π½Π΅Π΅, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ памяти Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° C++ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π»ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Доступ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ динамичСского массива Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΊ ΡΡ‚атичСским. ДинамичСский массив нСльзя ΠΏΡ€ΠΈ создании ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π΅Π»ΡŒΠ·Ρ ΠΎΠ±Π½ΡƒΠ»ΡΡ‚ΡŒ.

Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массивов с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΡΡ€Π΅Π΄ΡΡ‚Π² динамичСского распрСдСлСния памяти двумя способами:

— Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, описанных Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… alloc. h ΠΈ stdlib. h (стандартный Π‘ΠΈ);

— Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ new ΠΈ delete (Π‘ΠΈ++).

Для выдСлСния ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ динамичСской памяти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π». 1.1.

Π’Π°Π±Π»ΠΈΡ†Π° 1.1 — Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для формирования динамичСских массивов

Ѐункция

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС

malloc

void * malloc (unsigned s)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ области динамичСской памяти Π΄Π»ΠΈΠ½ΠΎΠΉ Π² s Π±Π°ΠΉΡ‚, ΠΏΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ NULL

calloc

void * calloc (unsigned n, unsigned m)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ области динамичСской памяти для размСщСния n ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΏΠΎ m Π±Π°ΠΉΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ, ΠΏΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ NULL

realloc

void * realloc (void * p, unsigned s)

Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° Ρ€Π°Π½Π΅Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ динамичСской памяти Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° s Π±Π°ΠΉΡ‚, радрСс Π½Π°Ρ‡Π°Π»Π° измСняСмого Π±Π»ΠΎΠΊΠ°, ΠΏΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ NULL

free

void *free (void p)

ΠžΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ‚ Ρ€Π°Π½Π΅Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ участок динамичСской памяти, Ρ€ — адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Ѐункция для формирования ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ динамичСского массива

int * make_mas (int n)

{

int *mas;

mas=(int*)malloc (n*sizeof (int));

for (inti=0;i

mas[i]=random (10);

return mas;

}

Для выдСлСния памяти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция malloc, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ выдСляСмого участка памяти Ρ€Π°Π²Π½Ρ‹ΠΉ n*sizeof (int). Π’Π°ΠΊ ΠΊΠ°ΠΊ функция malloc Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ void*, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ указатСля Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ int*.ΠžΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ free (mas).

1.8 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ динамичСских массивов с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ new ΠΈ delete

Для динамичСского распрСдСлСния памяти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new ΠΈ delete. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ

newимя_Ρ‚ΠΈΠΏΠ°

ΠΈΠ»ΠΈ

newимя_Ρ‚ΠΈΠΏΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€

позволяСт Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ доступным свободный участок памяти, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, опрСдСляСмому ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ°. Π’ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ участок заносится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ опрСдСляСмоС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выдСлСния памяти опСрация Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ адрСс Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ участка памяти, Ссли участок Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ся NULL.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

1) int *i;

i=new int (10);

2) float *f;

f=new float;

int *mas=new[5];

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… 1, 2 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ скалярныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ массив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ delete ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ освобоТдаСт участок памяти Ρ€Π°Π½Π΅Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ new.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Ѐункция для формирования Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ динамичСского массива

int ** make_matr (int n)

{

int **matr;

inti, j;

matr=new int*[n];

for (i=0;i

{

matr[i]=new int[n];

for (j=0;j

matr[i][j]=random (10);

}

return matr;

}

ΠŸΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ сначала выдСляСтся памяти для массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Π° Π·Π°Ρ‚Π΅ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ n ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов.

Рисунок 1.2 — Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ массив Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» для освобоТдСния ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

for (inti=0;i

delete matr[i];

ПослС этого освобоТдаСм ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ matr

delete [] matr;

Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΊ Π³Π»Π°Π²Π΅ 1

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ Π½Π°ΠΌΠΈ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описано с Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚Π°ΠΊΠΈΠ΅ понятия, ΠΊΠ°ΠΊ: ΠΏΡ€Π°Π²ΠΈΠ»Π° использования динамичСской памяти, указатСля ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ опрСдСлСния указатСля, способы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ указатСля, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ указатСлями, связь массива с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, способы доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Из Π²Ρ‹ΡˆΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ возмоТности ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΡ… массивов Π² Π‘++.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Ρƒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ области памяти; Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сами ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС мСста, Ρ‡Π΅ΠΌ массив/ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ (вмСсто ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ массива/ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚. Π΅. Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π΅Π³ΠΎ, Π° ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅).

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ динамичСских массивов состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ объСм памяти, выдСляСмой ΠΏΠΎΠ΄ массив, опрСдСляСтся Π½Π° ΡΡ‚Π°ΠΏΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ памяти ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π½Π΅ Π½Π° этапС компиляции. ДинамичСскоС Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ производится ΠΈΠ· ΠΊΡƒΡ‡ΠΈ, Π° Π½Π΅ ΠΈΠ· стСка, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠ»ΠΎΠΊ запроса Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π° Π½Π΅Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ.

ГЛАВА 2. Π ΠΠ—Π ΠΠ‘ΠžΠ’ΠšΠ ΠŸΠ Π˜ΠšΠ›ΠΠ”ΠΠžΠ™ ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ«. ΠŸΠ Π•Π”Π‘Π’ΠΠ’Π›Π•ΠΠ˜Π•

2.1 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, трСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ программирования Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C++ основаны Π½Π° ΠΏΠΎΠ½ΡΡ‚ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Ѐункция — ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, спроСктированная для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΡΠ·Ρ‹ΠΊΠ΅ C++ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Ρ‚Ρƒ ΠΆΠ΅ Ρ€ΠΎΠ»ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, хотя Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈΡ… ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… дСйствий. НапримСр, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf () осущСствляСтся Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΡΠΊΡ€Π°Π½. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… частях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ ΠΎΠΏΠΈΡΠ°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ main (), которая выполняСт Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ динамичСского массива. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈ.

Π Π°Π±ΠΎΡ‚Π° с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ массивами ΠΈΠΌΠ΅Π΅Ρ‚ ряд особСнностСй ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚Π΅ΠΉ. Они ΡƒΡΡƒΠ³ΡƒΠ±Π»ΡΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Π‘++ Π² соотвСтствии с трСбованиями эффСктивности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ минимально Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ ΠΎΡ‚ ΠΎΡˆΠΈΠ±ΠΎΠΊ программирования:

— Π΅ΡΠ»ΠΈ динамичСская пСрСмСнная создана, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π΅Π΅ «ΠΏΠΎΡ‚Срян» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, Ρ‚ΠΎ Ρ‚акая пСрСмСнная прСдставляСт собой «Π²Π΅Ρ‰ΡŒ Π² ΡΠ΅Π±Π΅» -сущСствуСт, Π½ΠΎ Π½Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Π° для использования. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, занимаСмая Сю ΠΏΠ°ΠΌΡΡ‚ΡŒ остаСтся Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ;

— ΠΎΡˆΠΈΠ±ΠΊΠΈ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ создания, уничтоТСния ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ (повторная ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° уничтоТСния динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° уничтоТСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ динамичСской ΠΈ Ρ‚. Π΄.), приводят ΠΊ Π½Π΅ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΡ‹ΠΌ послСдствиям Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° «Π²Π°Π»ΠΈΡ‚ся» ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ Π² Ρ‚ΠΎΠΌ мСстС, Π³Π΄Π΅ производятся ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ дСйствия, ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ.

2.2 Анализ ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

НапишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая для цСлочислСнной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, опрСдСляСт срСднСС арифмСтичСскоС Π΅Π΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС.

Алгоритм Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½. Для вычислСния срСднСго арифмСтичСского элСмСнтов массива трСбуСтся Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… ΠΎΠ±Ρ‰ΡƒΡŽ сумму, послС Ρ‡Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ просмотра массива Ρ€ΠΎΠ»ΠΈ Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ просмотра ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΠΎ ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌ. ОбС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠΌ просмотрС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π—Π΄Π΅ΡΡŒ размСрности массива Π·Π°Π΄Π°Π½Ρ‹ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ константами N row ΠΈ M col, Ρ‡Ρ‚ΠΎ позволяСт Π»Π΅Π³ΠΊΠΎ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. Для упрощСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ рСкомСндуСтся Π·Π°Π΄Π°Ρ‚ΡŒ нСбольшиС значСния этих констант. ΠŸΡ€ΠΈ вычислСнии количСства ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ дСйствия:

— ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ счСтчика n, просмотр ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта строки ΠΈ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ с Π½ΡƒΠ»Π΅ΠΌ, ΠΏΡ€ΠΈ нСобходимости ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ счСтчика Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, Π° ΠΏΠΎΡΠ»Π΅ окончания вычислСний — Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния счСтчика.

РСкомСндуСтся послС Π²Π²ΠΎΠ΄Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Ρ‘ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΡΠΊΡ€Π°Π½.

#include

#include

using namespace std;

voidmain ()

{

setlocale (LC_CTYPE, " «);

intnrow, ncol;

cout<< " Π’Π²Π΅Π΄ΠΈΡ‚Π΅ N row: " <

cin>>nrow;

cout<< " Π’Π²Π΅Π΄ΠΈΡ‚Π΅ M col:" <

cin>>ncol;

int** a = new int*[nrow];

int i, j;

for (i = 0; i i++)

{

a[i] = new int[ncol];

for (j = 0; j j++)

{

a[i][j] = rand () % 201 - 100; // -100 : 100

cout<< a[i][j] << " " ;

}

cout<

}

int n; // счСтчик ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов

float s = 0; // суммаэлСмСнтов

for (i = 0; i i++)

{

n = 0;

for (j = 0; j j++)

{

s += a[i][j];

if (a[i][j]>0) n++;

}

cout<< " B строкС " << i << " ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов: "

<< n <

}

s /= nrow*ncol; // вычислСниС срСднСго Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

cout<< " Π‘Ρ€Π΅Π΄Π½Π΅Π΅ арифмСтичСскоС Ρ€Π°Π²Π½ΠΎ: " << s <

system («pause»);

for (int i = 0; i i++)

delete a[i];

delete[]a;

return;

}

Рисунок 2.1 — РСакция Π­Π’Πœ

На Ρ€ΠΈΡ. 2.1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрации Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ динамичСского массива с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new.

Π’ Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ выдСляСтся динамичСская ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая Π·Π°Π΄Π°Π½Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ константами Nrow=5 ΠΈ Mcol=4.

Π—Π°Ρ‚Π΅ΠΌ осущСствляСтся Π²Π²ΠΎΠ΄ элСмСнтов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послС Ρ‡Π΅Π³ΠΎ выполняСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массива, ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π½Π° ΡΠΊΡ€Π°Π½, Π² Π½Π°ΡˆΠ΅ΠΌ случаС это Π²Ρ‹Π²ΠΎΠ΄ количСства ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΈ ΡΡ€Π΅Π΄Π½Π΅Π΅ арифмСтичСскоС Π΅Π΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ².

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° протСстирована ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ матСматичСских вычислСний Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π’Π«Π’ΠžΠ”Π«

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»ΠΈ достигнуты всС Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ: систСматизация Π·Π½Π°Π½ΠΈΠΉ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ практичСскиС Π½Π°Π²Ρ‹ΠΊΠΈ выдСлСния, пСрСраспрСдСлСния ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ памяти ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ массивами, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСмонстрируСт Ρ€Π°Π±ΠΎΡ‚Ρƒ динамичСского массива.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ динамичСского распрСдСлСния памяти Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΡ‚атичСского являСтся:

— ΡΠΊΠΎΠ½ΠΎΠΌΠ½ΠΎΠ΅ использованиС памяти;

— Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НСдостатком Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ся автоматичСская оптимизация ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π΄Π°Ρ‡Π° транслятором диагностичСских сообщСний. Для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ динамичСских массивов трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ‹Π»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Ρ‚рансляторы языка C++.

Π”Π°Π½Π½Ρ‹ΠΉ курсовой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅» для наглядной дСмонстрации Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ массивами. Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° 9,03 ΠœΠ‘.

БПИБОК Π˜Π‘ΠŸΠžΠ›Π¬Π—Π£Π•ΠœΠ«Π₯ Π˜Π‘Π’ΠžΠ§ΠΠ˜ΠšΠžΠ’

1. ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ А. Π―. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π‘++ Builder 6/А.Π―. ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ-М.:Π‘Π˜ΠΠžΠœ, 2002.-1152с.

2. Π’ΠΈΡ€Ρ‚ Н. Алгоритмы ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….: ΠŸΠ΅Ρ€. Π‘ Π°Π½Π³Π». — Πœ.: ΠœΠΈΡ€, 2001.

3. ПодбСльский Π’. Π’. Π―Π·Ρ‹ΠΊ Π‘ΠΈ++. — Πœ.: Ѐинансы ΠΈ ΡΡ‚атистика, 2004.

4. Π‘Π΅Π΄ΠΆΠ²ΠΈΠΊ Π . Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π° C++. Части 1−4. Анализ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°. Поиск. 2001.

5. ПодбСльский Π’. Π’., ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ++:/ Π£Ρ‡Π΅Π±. пособиС для студСнтов Π²ΡƒΠ·ΠΎΠ², ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ям «ΠŸΡ€ΠΈΠΊΠ»Π°Π΄. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° «ΠΈ «Π’ычисл. ΠΌΠ°ΡˆΠΈΠ½Ρ‹, комплСксы, систСмы ΠΈ ΡΠ΅Ρ‚ΠΈ"/Π’.ПодбСльский.-5 Π΅ ΠΈΠ·Π΄.-М.: Ѐинансы ΠΈ ΡΡ‚атистика, 2003.-560с.

6. Бтрауструп, Π‘ΡŒΠ΅Ρ€Π½. Π―Π·Ρ‹ΠΊ программирования Π‘++/Π‘ΡŒΠ΅Ρ€Π½ Бтрауструп; ΠΏΠ΅Ρ€. Ρ английского Π‘. Анисимова, М. Кононова ΠΏΠΎΠ΄ Ρ€Π΅Π΄. Π€. АндрССва, А.Ушакова.- Π‘ΠΏΠ΅Ρ†. ΠΈΠ·Π΄Π°Π½ΠΈΠ΅.-М.:Π‘ΠΈΠ½ΠΎΠΌ, 2004.-1038с

7. ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½, Π‘Ρ€ΠΈΠ°Π½ Π’., Π ΠΈΡ‚Ρ‡ΠΈ, Π”Π΅Π½Π½ΠΈΡΠœ. Π―Π·Ρ‹ΠΊ программирования Π‘/ ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». ΠΈΠ·Π΄., ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±. И Π΄ΠΎΠΏ.-М.:Ѐинансы ΠΈ ΡΡ‚атистика, 1992.-271 с.

8. Π’ΠΎΠΏΠΏ Π£., Π€ΠΎΡ€Π΄ Π£. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘++. 1999.

9. Π₯эзфилд Π ., ΠšΠΈΡ€Π±ΠΈ Π›. Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° C. Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. 2001.

10. Π€Ρ€ΠΈΠ΄ΠΌΠ°Π½ А. Π›. Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ++. ΠšΡƒΡ€Ρ Π»Π΅ΠΊΡ†ΠΈΠΉ: [ΡƒΡ‡Π΅Π±. пособиС для Π²ΡƒΠ·ΠΎΠ²]/А.Π›. Π€Ρ€ΠΈΠ΄ΠΌΠ°Π½ — М.: Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-УнивСрситСт Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, 2004.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ