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

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

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

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ массива Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ с Π½Π°Ρ‡Π°Π»Π°. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, Ссли Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π°ΠΉΠ΄Π΅Π½ элСмСнт больший Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π½Ρ‹ΠΉ A (k=1). Для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ наличия Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ элСмСнта Ρ€Π°Π²Π½ΠΎΠ³ΠΎ A, Π²Π²Π΅Π΄Π΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ f Ρ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ f=0. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ элСмСнта A, пСрСмСнная f=1. Для опрСдСлСния Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ числа A Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π²Π²Π΅Π΄Π΅ΠΌ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’ ΠΏΠΎΡΠΎΠ±ΠΈΠΈ даСтся понятиС массива, ΠΏΡ€Π°Π²ΠΈΠ»Π° описания массивов Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘. Π Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ основныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΡΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ Π΄Π»Ρ всСх рассмотрСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

Для студСнтов тСхничСских ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΈ Π·Π°ΠΎΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌ обучСния.

  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅
  • 1. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² ΡΠ·Ρ‹ΠΊΠ΅ Π‘
    • 1.1. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ массива
    • 1.2. ДинамичСскиС массивы
  • 2. Алгоритмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов
    • 2.1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива
    • 2.2. Π’Π²ΠΎΠ΄ — Π²Ρ‹Π²ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
    • 2.3. ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π΄Π²ΡƒΡ… элСмСнтов массива
    • 2.4. ВычислСниС суммы элСмСнтов массива
    • 2.5. ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства элСмСнтов массива, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ
    • 2.6. ВычислСниС произвСдСния элСмСнтов массива
    • 2.7. Поиск элСмСнтов, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ свойством
    • 2.8 Поиск Π² ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΠΌ массивС
    • 2.9. Поиск минимального ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта массива ΠΈ Π΅Π³ΠΎ порядкового Π½ΠΎΠΌΠ΅Ρ€Π° (индСкса)
    • 2.10. ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массивов
    • 2.10 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива
  • Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов
    • Π—Π°Π΄Π°Ρ‡Π° 1. ВычислСниС сумм, количСств ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ элСмСнтов массива
    • Π—Π°Π΄Π°Ρ‡Π° 2. ВычислСниС сумм, количСств ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ элСмСнтов массива
  • 1. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² ΡΠ·Ρ‹ΠΊΠ΅ Π‘

1.1 ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ массива

Массив — это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ΄Π½ΠΎ имя ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠŸΠš Π²ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π°Ρ€ΠΈΡ„мСтичСских Π΄Π°Π½Π½Ρ‹Ρ…, символов, строк, структур, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Доступ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам массива осущСствляСтся ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ массива ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡƒ (порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ) элСмСнта.

ΠŸΡ€ΠΈ объявлСнии массива Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ опрСдСляСтся имя массива, Ρ‚ΠΈΠΏ Π΅Π³ΠΎ элСмСнтов, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ количСство ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ массива опрСдСляСтся количСством индСксов ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅, Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅, Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ Ρ‚. Π΄.. Π Π°Π·ΠΌΠ΅Ρ€ массива — это количСство Π΅Π³ΠΎ элСмСнтов ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ размСрностям. ΠžΠ±Ρ‰ΠΈΠΉ Π²ΠΈΠ΄ объявлСния массива:

<�имя_Ρ‚ΠΈΠΏΠ°> <�имя_массива> [k1] [k2] … [kn];

Π³Π΄Π΅ k1, k2, …, kn — количСство элСмСнтов массива — константы ΠΈΠ»ΠΈ константныС выраТСния ΠΏΠΎ 1, 2, …, n измСрСниям. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ значСния индСксов ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ 0 Π΄ΠΎ ki — 1.

Π’Π°ΠΊΠΎΠ΅ объявлСниС массива Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ статичСским, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство Π΅Π³ΠΎ элСмСнтов извСстно Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈ ΠΎΠ½ΠΎ ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ:

Ё ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ трансляторы языка Π‘ΠΈ Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ индСксов, это Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ программист;

Ё ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ массива Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ;

Ё Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ элСмСнты массива Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΎΡ‚ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ быстро мСняСтся самый ΠΏΡ€Π°Π²Ρ‹ΠΉ индСкс массива, Ρ‚. Π΅. ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, располагаСтся Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΏΠΎ ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌ;

Ё ΠΈΠΌΡ массива являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ — константой Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива;

Ё ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ массивами Π² Π‘ΠΈ Π½Π΅Ρ‚, поэтому пСрСсылка элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ поэлСмСнтно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π°;

Ё Π½Π°Π΄ элСмСнтами массива Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‡Ρ‚ΠΎ ΠΈ Π½Π°Π΄ простыми ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°;

Ё Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов массива ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ поэлСмСнтно;

Ё Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния элСмСнтам массива ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ объявлСнии массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ объявлСния массивов:

int A [10]; //ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· 10 цСлочислСнных Π²Π΅Π»ΠΈΡ‡ΠΈΠ½

float X [20]; //ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· 20 вСщСствСнных Π²Π΅Π»ΠΈΡ‡ΠΈΠ½

int a[5]={1, 2, 3, 4, 5}; //массив с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π΅Π³ΠΎ элСмСнтов

int c[]={-1, 2, 0, -4, 5, -3, -5, -6, 1}; // массив Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ 6опрСдСляСтся числом ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄: A[0], A[1], A[2],…A[9], A[2*3].

Π’ Π‘ΠΈ Π½Π΅Ρ‚ массивов с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ. Но, Ссли количСство элСмСнтов массива извСстно Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ константу с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #define, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

#define n 10;

Main ()

{ int a[n], b[n]; // ОбъявлСниС 2-Ρ… ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

Если количСство элСмСнтов массива опрСдСляСтся Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ динамичСскоС Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

1.2 ДинамичСскиС массивы

Если Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ нСизвСстно, сколько Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ элСмСнтов, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ динамичСскиС массивы. ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π½ΠΈΡ… выдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. АдрСс Π½Π°Ρ‡Π°Π»Π° массива хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ. НапримСр.

int n=20;

int *a = new int[n];

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠžΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ памяти ΠΏΡ€ΠΈ Π΅Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π΅ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ динамичСский массив нСльзя.

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ динамичСского массива осущСствляСтся Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ массива. НапримСр: a[0], a[1], …, a[9].

МоТно ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ массива Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом: *(a+9), *(a+i), Ρ‚.ΠΊ. Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ a хранится адрСс Π½Π°Ρ‡Π°Π»Π° массива. Для получСния адрСса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 9 — Π³ΠΎ Π΅Π³ΠΎ элСмСнта ΠΊ ΡΡ‚ΠΎΠΌΡƒ адрСсу прибавляСтся 9Β· sizeof (int) (9 ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½Π°Β· Π΄Π»ΠΈΠ½Ρƒ элСмСнта Ρ‚ΠΈΠΏΠ° int), Ρ‚. Π΅. ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ адрСсу a прибавляСтся смСщСниС 9. Π—Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ *(разадрСсации) выполняСтся Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° значСния ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ области памяти.

ПослС использования массива выдСлСнная динамичСская ΠΏΠ°ΠΌΡΡ‚ΡŒ освобоТдаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π΅Π°Ρ‚ΠΎΡ€Π°: delete [ ] имя массива. Π’Π°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива a:

delete [ ] a; .

ВрСмя «ΠΆΠΈΠ·Π½ΠΈ» динамичСского массива опрСдСляСтся с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° выдСлСния динамичСской памяти Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ.

2. Алгоритмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

2.1 Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива — это присваиваниС элСмСнтам массива Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ массива ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π° ΡΡ‚Π°ΠΏΠ΅ описания массива, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏ. 1.1. Но Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ лишь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты массива, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присваивания. НапримСр:

a[0]= -1; a[1]=1.1;

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ всСм элСмСнтам массива ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ значСния осущСствляСтся Π² Ρ†ΠΈΠΊΠ»Π΅. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всСм элСмСнтам массива a ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° Ρ€ΠΈΡ. 2.1.

for (i=0;i

a[i]=0;

// ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° while

i=0;

while (i

{

a[i]=0;

i=i+1;

}

Рисунок 2.1 Алгоритм ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива Π’ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ всС элСмСнты массива Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ — 0.

2.2. Π’Π²ΠΎΠ΄ — Π²Ρ‹Π²ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Для Π²Π²ΠΎΠ΄Π° n элСмСнтов ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ А, трСбуСтся ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ», для Π²Π²ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ i — Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°, Π³Π΄Π΅ i=0,1,2, …, n-1. Аналогичный Ρ†ΠΈΠΊΠ» трСбуСтся ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Π»Ρ Π²Ρ‹Π²ΠΎΠ΄Π° элСмСнтов массива. На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.2 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° графичСская схСма Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° элСмСнтов массива.

/* Π’Π²ΠΎΠ΄ — Π²Ρ‹Π²ΠΎΠ΄ статичСского массива*/

#include

#define n 50;

void main ()

{

int n, i;

float A[n];

puts («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число элСмСнтов массива «);

scanf («%d» ,&n);

// Π’Π²ΠΎΠ΄ массива

for (i=0; i

{ printf («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число A[%2d]=», i);

scanf («%f» ,&A[i]);

}

// Π’Ρ‹Π²ΠΎΠ΄ массива

puts («ΠœΠ°ΡΡΠΈΠ² A»);

for (i=0;i

printf («%6.3f «, A[i]);

printf («n»);

}

Рисунок 2.2 Алгоритм ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π²ΠΎΠ΄Π° — Π²Ρ‹Π²ΠΎΠ΄Π° статичСского массива Π’Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ динамичСского массива осущСствляСтся ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ. Из ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° динамичСского массива Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ лишь Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ массива.

/* Π’Π²ΠΎΠ΄ — Π²Ρ‹Π²ΠΎΠ΄ динамичСского массива*/

#include

void main ()

{

int n, i;

puts («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число элСмСнтов массива a»);

scanf («%d» ,&n);

float *a=new float[n]; // ОписаниС динамичСского массва

// Π’Π²ΠΎΠ΄ массива

for (i=0;i

{ printf («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число a[%2d]=», i);

scanf («%f», a+i); // ΠΈΠ»ΠΈ scanf («%f» ,&a[i]);

}

// Π’Ρ‹Π²ΠΎΠ΄ массива

puts («ΠœΠ°ΡΡΠΈΠ² a»);

for (i=0;i

printf («%.3f «,*(a+i)); // ΠΈΠ»ΠΈ printf («%.3f «, a[i]);

printf («n»);

delete[] a; // ОсвобоТдСниС памяти Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ массив

}

2.3 ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π΄Π²ΡƒΡ… элСмСнтов массива

Для пСрСстановки Π΄Π²ΡƒΡ… элСмСнтов массива x[] с ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ k ΠΈ m, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ использованиС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (tmp), для хранСния ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² (рисунок 2.3 Π°), Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· использования Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ tmp. Π’ ΡΡ‚ΠΎΠΌ случаи Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ пСрСстановки ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ (рисунок 2.3 Π±).

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ способ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний, Ρ‡Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ пСрСстановкС вСщСствСнных чисСл.

tmp=x[k];

x[k]=x[m];

x[m]=tmp;

x[k]=x[k]+x[m];

x[m]=x[k]-x[m];

x[k]=x[k]-x[m];

(Π°)

(Π±)

Рисунок 2.3 Алгоритм ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСстановки Π΄Π²ΡƒΡ… элСмСнтов массива c ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π°) ΠΈ Π±Π΅Π· Π½Π΅Π΅ (Π±)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.1

ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ элСмСнт массива x[] мСстами. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов массива n.

РСшСниС

Π’ Π‘ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΡ элСмСнтов массива начинаСтся с Π½ΡƒΠ»Ρ, поэтому Π½ΠΎΠΌΠ΅Ρ€ послСднСго элСмСнта массива (n-1) .

1 способ: tmp=x[0]; x[0]=x[n-1]; x[n-1]=tmp;

2 способ: x[0]=x[0]+x[n-1]; x[n-1]=x[0]-x[n-1]; x[0]=x[0]-x[n-1];

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.2

ΠŸΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт массива x[k] с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ.

РСшСниС

ΠŸΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт массива x[k] являСтся послСдним, Ρ‚ΠΎ ΠΎΠ±ΠΌΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт отсутствуСт.

if (k == n-1)

puts («ΠžΠ±ΠΌΠ΅Π½ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½.»);

else

{

tmp=x[k];

x[k]=x[k+1];

x[k+1]=tmp;

}

Рисунок 2.4 Алгоритм ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСстановки Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ элСмСнт массива x[k] с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠŸΡ€ΠΈ пСрСстановкС с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ элСмСнтом, ΠΎΠ±ΠΌΠ΅Π½ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ссли Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ (k=0).

2.4 ВычислСниС суммы элСмСнтов массива

Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму всСх ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… элСмСнтов массива, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сумму элСмСнтов, стоящих Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… мСстах, ΠΈΠ»ΠΈ сумму элСмСнтов, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ (сумму Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов, сумму Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ массива ΠΈ Ρ‚. Π΄.).

ΠŸΡƒΡΡ‚ΡŒ Π°[] — Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ массив ΠΈΠ· n элСмСнтов. Π‘ΡƒΠΌΠΌΠ° всСх Π΅Π³ΠΎ элСмСнтов Π² ΠΌΠ°Ρ‚СматичСской Ρ„ΠΎΡ€ΠΌΠ΅ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

(2.1)

Для вычислСния суммы элСмСнтов части массива, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с in-Π³ΠΎ Π΄ΠΎ ik-Π³ΠΎ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ:

(2.2)

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° (2.2) получаСтся ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ (2.1) ΠΏΡ€ΠΈ in=0 ΠΈ ik=n-1.

Алгоритм вычислСния суммы состоит Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

1. ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½ΠΎΠΉ для накоплСния суммы (s) Π² Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (s=0);

2. Π² Ρ†ΠΈΠΊΠ»Π΅ измСняя i ΠΎΡ‚ in Π΄ΠΎ ik Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ суммуэлСмСнтов массива ΠΏΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈΡŽ s=s+ai.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° (i=in) ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ s=s+ain= 0+ ain. На Π²Ρ‚ΠΎΡ€ΠΎΠΉ (i=in+1) — s=s+ain+1= ain + ain+1 ΠΈ Ρ‚. Π΄. На ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ s=s+aik= ain + ain+1+…+ aik. Π’. Π΅. Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ i «ΡΡ‚Π°Ρ€ΠΎΠ΅» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ s, содСрТащСС Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡƒΡŽ сумму Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, измСняСтся Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ai. На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.5 прСдставлСн Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ вычислСния суммы элСмСнтов массива.

*/вычислСниС суммы элСмСнтов массива с in ΠΏΠΎ ik

s=0;

for (i=in;i

s=s+a[i]; // ΠΈΠ»ΠΈ s+=a[i]; ΠΈΠ»ΠΈ s+=*(a+i);

*/вычислСниС суммы всСх элСмСнтов массива

s=0;

for (i=0;i

s+=a[i];

Рисунок 2.5 ГрафичСская схСма ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ вычислСния суммы элСмСнтов массива

Если Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ (рисунок 2.5) Π² Π±Π»ΠΎΠΊΠ΅ 2 Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ i=0, Π° Π±Π»ΠΎΠΊΠ΅ 3 — (i), Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ вычислСния суммы всСх элСмСнтов массива.

РассмотрСнный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ вычислСния суммы, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ для вычислСния суммы элСмСнтов, стоящих Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… мСстах (рисунок 2.6). Π’ ΡΡ‚ΠΎΠΌ случаи шаг измСнСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ†ΠΈΠΊΠ»Π° опрСдСляСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ step.

/* с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for */

s=0;

for (i=in;i

s+=a[i]; // ΠΈΠ»ΠΈ s=s+a[i];

/* с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° while */

s=0; i=in;

while (i

{

s+=a[i];

i=i+step;

}

Рисунок 2.6 ГрафичСская схСма ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ вычислСния суммы элСмСнтов массива стоящих Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… мСстах НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму элСмСнтов, стоящих Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π° Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ «Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ» i ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния 1, 3, 5, … (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нумСрация элСмСнтов массива Π² Π‘ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ся с Π½ΡƒΠ»Ρ Ρ‚. Π΅. элСмСнт массива с ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ a[0] — ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива). Для этого достаточно Π² Π±Π»ΠΎΠΊΠ΅ 2 Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ i=1, Π² Π±Π»ΠΎΠΊΠ΅ 3 — (i, Π° Π² Π±Π»ΠΎΠΊΠ΅ 5 Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ i=i+2 (step=2). Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

s=0;

for (i=1;i

s+=a[i]; // ΠΈΠ»ΠΈ s=s+a[i];

Для вычислСния суммы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ вычислСния суммы (рисунок 2.6) Π±Π»ΠΎΠΊ 4 Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обСспСчиваСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ s=s+ai Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° условиС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ для рассматриваСмого элСмСнта массива ai. Π’ ΡΡ‚ΠΎΠΌ случаи Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ вычислСния суммы ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ (рисунок 2.7).

/* с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for */

s=0;

for (i=in;i

if (условиС) s+=a[i]; // ΠΈΠ»ΠΈ s=s+a[i];

/* с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° while */

s=0; i=in;

while (i

{

if (условиС) s+=a[i];

i=i+step;

}

Рисунок 2.7 ГрафичСская схСма ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ вычислСния суммы элСмСнтов массива стоящих Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… мСстах ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для вычислСния суммы ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов массива стоящих Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах. Для этого Π² Π±Π»ΠΎΠΊΠ΅ 2 запишСм i=0, Π² Π±Π»ΠΎΠΊΠ΅ 3 (i, Π² 4 условиС — (a[i]>0), Π° Π² Π±Π»ΠΎΠΊΠ΅ 6 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ†ΠΈΠΊΠ»Π° (step=2) i=i+2. Π’ΠΎΠ³Π΄Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅:

s=0;

for (i=0;i

if (a[i]>0) s+=a[i]; // ΠΈΠ»ΠΈ s=s+a[i];

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования рассмотрСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.3.

Π’ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС a Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ n, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму элСмСнтов массива, ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ значСния Π’ ΠΈ ΡΡ‚оящих Π½Π° ΠΌΠ΅ΡΡ‚Π°Ρ…, ΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… Ρ‚Ρ€Π΅ΠΌ.

РСшСниС

ОбъСдиним Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π²Π²ΠΎΠ΄Π° — Π²Ρ‹Π²ΠΎΠ΄Π° массива (рисунок 2.2) ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ суммы (рисунок 2.7). Для сокращСния записи графичСской схСмы Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° массива, здСсь ΠΈ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ простыС Π±Π»ΠΎΠΊΠΈ Π²ΠΈΠ΄Π°:

Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ для вычислСния искомой суммы Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ стоят Π½Π° ΠΌΠ΅ΡΡ‚Π°Ρ…, ΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… Ρ‚Ρ€Π΅ΠΌ, ΠΏΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ нумСрация элСмСнтов массива Π² Π‘ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ся с Π½ΡƒΠ»Ρ Ρ‚. Π΅. элСмСнт массива с ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ a[0] это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, элСмСнты стоящиС Π½Π° ΠΌΠ΅ΡΡ‚Π°Ρ… ΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… Ρ‚Ρ€Π΅ΠΌ — Π°2, Π°5, Π°8, …, индСкс элСмСнта массива (ΠΎΠ½ ΠΆΠ΅ — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π°) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния 2, 5, 8, …, Ρ‚. Π΅. ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ 2 с ΡˆΠ°Π³ΠΎΠΌ 3, Ρ‡Ρ‚ΠΎ ΠΈ Π΄ΠΎΡΡ‚игаСтся измСнСниями Π² Π±Π»ΠΎΠΊΠ°Ρ… 2 ΠΈ 6 Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° вычислСния суммы (рисунок 2.7). Π’Π°ΠΊ Π² Π±Π»ΠΎΠΊΠ΅ 2 запишСм i=2, Π² Π±Π»ΠΎΠΊΠ΅ 3 (i, Π° Π² Π±Π»ΠΎΠΊΠ΅ 6 — (step=3) i=i+3. Для суммирования ΠΈΠ· Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½Ρ‹Ρ… элСмСнтов Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ мСньшС Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π’, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ с ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π°i<οΏ½Π’ (Π±Π»ΠΎΠΊ 4). ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ вычислСния суммы Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… элСмСнтов ΠΏΡ€ΠΈΠΌΠ΅Ρ‚, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ (рисунок 2.8). Π’ Π·Π°Π΄Π°Ρ‡Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ динамичСский способ задания массива. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для обращСния ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массива ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Как ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.1, имя массива являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

n — число элСмСнтов массива;

a[] - динамичСский массив;

s — сумма элСмСнтов массива;

B — Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число;

i — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π°;

#include

main ()

{

int n, i;

float s, B;

puts («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число элСмСнтов массива a»);

scanf («%d» ,&n);

float *a=new float[n];

for (i=0;i

{ printf («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число a[%2d]=», i);

scanf («%f», a+i);

}

puts («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ B»);

scanf («%f» ,&B);

s=0;

for (i=2;i

if (*(a+i)

puts («ΠœΠ°ΡΡΠΈΠ² a»);

for (i=0;i

printf («%.1f «,*(a+i));

printf («n»);

printf («Π‘ΡƒΠΌΠΌΠ° чисСл, ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… %.1f, стоящих Π½Π° ΠΌΠ΅ΡΡ‚Π°Ρ…, ΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… 3, Ρ€Π°Π²Π½Π° %.2fn», B, s);

delete[] a; // освобоТдСниС памяти

return (0);

}

Рисунок 2.8 ГрафичСская схСма ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 2.3

2.5 ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства элСмСнтов массива, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства элСмСнтов массива, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, производится ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ суммы. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вмСсто добавлСния элСмСнта массива ΠΊ ΡΡƒΠΌΠΌΠ΅, пСрСмСнная — счСтчик (k) увСличиваСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ (k=k+1). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Π² Π³Ρ€Π°Ρ„ичСских схСмах Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², рисунок 2.5−2.7, вмСсто s=0 ΠΈ s=s+ai Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ k=0 ΠΈ k=k+1, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ подсчСта количСства элСмСнтов массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.4.

Π’ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС a Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ n, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ количСство элСмСнтов Ρ€Π°Π²Π½Ρ‹Ρ… Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ числу B ΠΈ ΡΡ‚оящих Π½Π° Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах.

РСшСниС.

ГрафичСская схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅. 2.9.

/* с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for */

k=0;

for (i=1;i

if (a[i]==b) k++; // ΠΈΠ»ΠΈ k=k+1;

/* с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° while */

k=0; i=1;

while (i

{

if (a[i]==b) k++;

i=i+2;

}

Рисунок 2.9 ГрафичСская схСма ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 2.4

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π² ΠΎΠ΄Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ сумму ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.5.

Π’ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС a Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ n, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ срСднСС арифмСтичСскоС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ массива, стоящих Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах.

РСшСниС

Π‘Ρ€Π΅Π΄Π½Π΅Π΅ арифмСтичСскоС чисСл (sr) — частноС ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΡ… ΡΡƒΠΌΠΌΡ‹ (s) Π½Π° ΠΈΡ… ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ (k): sr=s/k, Π³Π΄Π΅ k?0. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π°Π΄Π°Ρ‡Π° сводится ΠΊ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ суммы ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ массива, стоящих Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.7, Π² ΡΠΎΠΎΡ‚вСтствии с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ сумму ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ части элСмСнтов массива (Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹), ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ (ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов).

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π½ΠΎΠΌΠ΅Ρ€ in Ρ‚ΠΎΠ³ΠΎ элСмСнта, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ элСмСнты Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ массива. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ элСмСнты стоящиС Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ in Ρ‚ΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нумСрация элСмСнтов массива начинаСтся с Π½ΡƒΠ»Ρ). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ in ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ (2.3) Π³Π΄Π΅ ΠΏΠ°Ρ€Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок [ ] опрСдСляСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ вычислСния Ρ†Π΅Π»ΠΎΠΉ части числа:

(2.3)

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ik совпадаСт с n, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массив Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π° i (Π½ΠΎΠΌΠ΅Ρ€ элСмСнта массива) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ с ΡˆΠ°Π³ΠΎΠΌ 2, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ значСния индСкса (значСния Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² элСмСнтов массива), Ρ‚. Π΅. i=i+2. ВычислСниС суммы ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ i, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сократит Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

ΠŸΡ€ΠΈ вычислСнии срСднСго арифмСтичСского sr=s/k Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ дСлСния Π½Π° Π½ΠΎΠ»ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ссли Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ массива Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚ся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Ρ‚ΠΎ k Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ. НапримСр, для массива X={2, 0, -6, 7, 9, 0, —14, —5, 0, -4, —32}; n=11; in=[n/2]+1=6, Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ i Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты, Π° ΡΡ€Π΅Π΄ΠΈ Π½ΠΈΡ… Π½Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл, поэтому пСрСмСнная k останСтся Ρ€Π°Π²Π½ΠΎΠΉ Π½ΡƒΠ»ΡŽ. Π’ Π³Ρ€Π°Ρ„ичСской схСмС (рисунок 2.10) для этой Ρ†Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ провСряСтся условиС k=0. Если это условиС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ся сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вычислСно, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС вычисляСтся ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ sr.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ [n/2] опрСдСляСтся ΠΏΠΎ ΠΎΡΡ‚Π°Ρ‚ΠΊΡƒ ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ n Π½Π° 2 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ % — опрСдСлСния остатка цСлочислСнного дСлСния (ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ цСлочислСнный, Ρ‚.ΠΊ. n ΠΈ 2 — цСлочислСнныС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹).

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

n — число элСмСнтов массива;

a[] - статичСский массив;

in — ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‡Π΅Ρ‚Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ массива;

s — сумма элСмСнтов массива ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ;

k — количСство элСмСнтов массива ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ;

sr — срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов массива ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ;

i — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π°;

#include

main ()

{

float a[20];

int n, i, in, k;

float s, sr;

puts («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число элСмСнтов массива a»);

scanf («%d» ,&n);

for (i=0;i

{ printf («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число a[%2d]=», i);

scanf («%f» ,&a[i]);

}

if ((n/2)%2==0) in=n/2;

else in=n/2+1;

s=0; k=0;

for (i=in;i

if (a[i]>0) { s+=a[i]; k++;}

puts («ΠœΠ°ΡΡΠΈΠ² a»);

for (i=0;i

printf («a[%2d]=%6.2f n», i, a[i]);

if (k==0)

puts («Π‘Ρ€Π΅Π΄Π½Π΅Π΅ арифмСтичСскоС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ нСльзя!»);

else

{

sr=s/k;

printf («Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π°Ρ€ΠΈΡ„. ΠΏΠΎΠ»ΠΎΠΆ. элСмСнтов Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ…. мСстах Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ². массива =%6.3fn», sr);

}

return (0);

}

Рисунок 2.10 ГрафичСская схСма ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 2.5

2.6 ВычислСниС произвСдСния элСмСнтов массива

Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ вычисляСтся ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов массива, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ вычислСния сумм:

(2.4)

. (2.5)

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ вычислСниС произвСдСния элСмСнтов массива выполнятся ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ суммы. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ произвСдСния p Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½Ρ‹ΠΌ 1, Π° Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ i Π½Π°Π΄ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ p=p*ai. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Π² Π³Ρ€Π°Ρ„ичСских схСмах Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², рисунок 2.5 — 2.7 вмСсто s=0 ΠΈ s=s+ai Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ p=1 ΠΈ p=p*ai, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ вычислСния произвСдСния элСмСнтов массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.6.

Π’ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС a Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ n, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ срСднСС гСомСтричСскоС Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов массива.

РСшСниС

Π‘Ρ€Π΅Π΄Π½Π΅Π΅ гСомСтричСскоС k элСмСнтов массива — это ΠΊΠΎΡ€Π΅Π½ΡŒ стСпСни k ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ этих элСмСнтов. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, сначала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π  Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов массива ΠΈ ΠΈΡ… ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ k, Π° Π·Π°Ρ‚Π΅ΠΌ срСднСС гСомСтричСскоС Sg ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

. (2.6)

НапримСр, Ссли элСмСнты массива Ρ€Π°Π²Π½Ρ‹ A= {1, 0, 2, 4, 0} Ρ‚ΠΎ ;

ГрафичСская схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.11. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ i (Π±Π»ΠΎΠΊΠΈ 5 — 9) ΠΏΠΎΠΌΠΈΠΌΠΎ вычислСния произвСдСния вычисляСтся ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов массива. ПослС Ρ†ΠΈΠΊΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ вСтвлСния, провСряСтся, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ элСмСнты (k>0 — условиС наличия Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов), Π² ΡΡ‚ΠΎΠΌ случаС вычисляСтся ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ся срСднСС гСомСтричСскоС. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС выводится сообщСниС «Π’ ΠΌΠ°ΡΡΠΈΠ²Π΅ всС элСмСнты Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ». Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π  ΠΈ Sg ΠΈΠΌΠ΅ΡŽΡ‚ вСщСствСнный Ρ‚ΠΈΠΏ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности (double), Ρ‚.ΠΊ. ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ вСщСствСнных чисСл ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большим числом.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

n — число элСмСнтов массива;

a[] - статичСский массив;

P - ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов массива;

k — количСство Π½Π΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов массива;

Sg — ΡΡ€Π΅Π΄Π½Π΅Π΅ гСомСтричСскоС элСмСнтов массива;

i — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π°;

#include

#include

main ()

{

float a[20];

int n, i, k;

double P, Sg;

puts («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число элСмСнтов массива a»);

scanf («%d» ,&n);

for (i=0;i

{ printf («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число a[%2d]=», i);

scanf («%f» ,&a[i]);

}

P=1; k=0;

for (i=0;i

if (a[i]≠0) {P*=a[i]; k++;}

puts («ΠœΠ°ΡΡΠΈΠ² a»);

for (i=0;i

printf («a[%2d]=%6.2f n», i, a[i]);

if (k>0)

{

if (P>0) Sg=powl (P, 1.0/k);

else Sg= —powl (fabs (P), 1.0/k);

printf («Π‘Ρ€Π΅Π΄Π½Π΅Π΅ гСомСтричСскоС Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов массива =%.4lf n», Sg);

printf («P=%.4lf k=%d n», P, k);

}

else puts («Π’ ΠΌΠ°ΡΡΠΈΠ²Π΅ всС элСмСнты Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ! »);

return (0);

}

Рисунок 2.11 ГрафичСская схСма ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 2.6

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для возвСдСния P Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ 1/k ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция powl(основаниС, ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ), ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ P использовано Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, запись ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄: —powl (fabs (P), 1.0/k).

2.7 Поиск элСмСнтов, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ свойством

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

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях для просмотра массива ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° while со ΡΠ»ΠΎΠΆΠ½Ρ‹ΠΌ условиСм. ГрафичСская схСма для рассматриваСмого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.12. ПослС Ρ†ΠΈΠΊΠ»Π° достаточно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Π΅ΠΌΡƒ Ρ€Π°Π²Π½ΠΎ i. Если окаТСтся, Ρ‡Ρ‚ΠΎ i=n, Ρ‚. Π΅. Π±Ρ‹Π»ΠΈ просмотрСны всС элСмСнты, Ρ‚ΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Ρ‚ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов.

i=0;

while (i

If (i == n)

puts («Π’ ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Ρ‚ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов»);

else

puts(«Π’ ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΅ΡΡ‚ΡŒ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт»);

Рисунок 2.12 ГрафичСская схСма ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ поиска Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ элСмСнта Π² ΠΌΠ°ΡΡΠΈΠ²Π΅

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

i=n-1;

while (i>=0 && a[i]≠0) i=i-1;

If (i<0)

puts («Π’ ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Ρ‚ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов»);

else

printf («Π˜Π½Π΄Π΅ΠΊΡ послСднСго нуля — %d n», i);

Рисунок 2.13 ГрафичСская схСма ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ поиска Π½ΠΎΠΌΠ΅Ρ€Π° послСднСго Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ элСмСнта Π² ΠΌΠ°ΡΡΠΈΠ²Π΅

НомСр (индСкс) ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ элСмСнта ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ†ΠΈΠΊΠ»Π° i. Π­Ρ‚ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… вычислСниях Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ Π½ΠΎΠΌΠ΅Ρ€ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта для поиска максимума.

2.8 Поиск Π² ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΠΌ массивС

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

(Π°)

(Π±)

Рисунок 2.14. ГрафичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ упорядочСнного массива с ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ с Π½Π°Ρ‡Π°Π»Π° (Π°), с ΠΊΠΎΠ½Ρ†Π° (Π±)

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π±Π»ΠΎΠΊ-схСмы, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ условиС управляСт досрочным Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. Пока Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ условиС истина ΠΈ Π½Π΅ ΠΊΠΎΠ½Π΅Ρ† массива i, Ρ†ΠΈΠΊΠ» выполняСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡƒΡΠ»ΠΎΠ²ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ происходит Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.7

Π’ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС X с ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠΌ элСмСнтов n, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅ΡΡ‚ΡŒ Π»ΠΈ число Ρ€Π°Π²Π½ΠΎΠ΅ A ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ½ΠΎ находится, Ссли числа A Π½Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСсто Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ массива.

РСшСниС

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ массива Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ с Π½Π°Ρ‡Π°Π»Π°. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, Ссли Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π°ΠΉΠ΄Π΅Π½ элСмСнт больший Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π½Ρ‹ΠΉ A (k=1). Для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ наличия Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ элСмСнта Ρ€Π°Π²Π½ΠΎΠ³ΠΎ A, Π²Π²Π΅Π΄Π΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ f с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ f=0. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ элСмСнта A, пСрСмСнная f=1. Для опрСдСлСния Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ числа A Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π²Π²Π΅Π΄Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ poz с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ n, Ρ‚. Π΅. прСдполагая, Ρ‡Ρ‚ΠΎ всС элСмСнты массива мСньшС A. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ числа большСго ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎΠ³ΠΎ A Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ poz сохраняСтся Π΅Π³ΠΎ индСкс — i. ПослС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ f опрСдСляСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈ ΠΌΠ΅ΡΡ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ A Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставлСны Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.15.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

n — число элСмСнтов массива;

a[] - статичСский массив;

k — ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ для досрочного Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ элСмСнта большСго ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎΠ³ΠΎ a;

f — Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ пСрСмСнная для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ наличия Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ числа Ρ€Π°Π²Π½ΠΎΠ³ΠΎ a;

poz — Π½ΠΎΠΌΠ΅Ρ€ элСмСнта массива Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ находится число a;

i — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π°;

#include

main ()

{

int f, k, n, poz, i, x[10], a;

puts («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число элСмСнтов массива:»);

scanf («%d» ,&n);

for (i=0;i

{

printf («x[%2d]=», i);

scanf («%d» ,&x[i]);

}

puts («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число a:»);

scanf («%d» ,&a);

f=0; poz=n; k=0;

for (i=0;i

{

if (x[i]>a) { poz=i;k=1;}

else

{

if (x[i]==a)

{poz=i; f=1; k=1;}

}

}

if (f==1)

printf («Π’ ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΅ΡΡ‚ΡŒ число =%d, Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ-%dn», a, poz);

else

printf («Π§ΠΈΡΠ»ΠΎ %d Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ-%dn», a, poz);

for (i=0;i

printf («x[%d]=%dn», i, x[i]);

return 0;

}

Рисунок 2.15. ГрафичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 2.7

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сравнСниСм послСднСго элСмСнта массива X[n-1] с Ρ‡ΠΈΡΠ»ΠΎΠΌ A, Ссли X[n-1]=A - Ρ‚ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число находится Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ мСстС, Π° Π² ΡΠ»ΡƒΡ‡Π°ΠΈ выполнСния X[n-1]>A - Ρ‚ΠΎ, число A Π΄ΠΎΠ»ΠΆΠ½ΠΎ находится Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ n. Если Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡ‚ΠΈΡ… условий Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, Ρ‚ΠΎ ΡΡ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск числа A Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.

2.9 Поиск минимального ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта массива ΠΈ Π΅Π³ΠΎ порядкового Π½ΠΎΠΌΠ΅Ρ€Π° (индСкса)

ΠŸΡƒΡΡ‚ΡŒ трСбуСтся Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт (min) ΠΈ Π΅Π³ΠΎ индСкс (n_min) Π²ΠΎ Π²ΡΠ΅ΠΌ массивС (in=0 ΠΈ ik=n) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎ Π΅Π³ΠΎ части (с in — Π³ΠΎ ΠΏΠΎ ik — Ρ‹ΠΉ), Π² ΡΡ‚ΠΎΠΌ случаи Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

1. Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ min Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ любой ΠΈΠ· Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… элСмСнтов (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ). Π’ΠΎΠ³Π΄Π° min=ain, n_min= in;

2. Π·Π°Ρ‚Π΅ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ i начиная со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта (i=in+1, …, ik) Π±ΡƒΠ΄Π΅ΠΌ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ элСмСнты массива ai Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ min. Если окаТСтся, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ (i - Ρ‹ΠΉ) элСмСнт массива мСньшС минимального (ai < min), Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ min ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ai, Π° n_min — Π½Π° i: min=ai, n_min= i.

ГрафичСская схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ поиска минимального элСмСнта Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.16.

min=a[in];

n_min=in;

for (i=in+1; i

if (a[i]

{

min=a[i];

n_min=i;

}

Рисунок 2.16. ГрафичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ поиска минимального элСмСнта Π² ΠΌΠ°ΡΡΠΈΠ²Π΅

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов, Π½Π°ΠΉΠ΄Π΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… (самый Π»Π΅Π²Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт) ΠΏΡ€ΠΈ просмотрС массива слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. Если Π² Π½Π΅Ρ€Π°Π²Π΅Π½ΡΡ‚Π²Π΅ ai< min Π·Π½Π°ΠΊ > ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° Π·Π½Π°ΠΊ ?, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ послСдний ΠΈΠ· Π½ΠΈΡ… (самый ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт).

Для поиска максимального элСмСнта max ΠΈ Π΅Π³ΠΎ индСкса n_max ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сначала Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ max =ain, n_ max = in, вмСсто нСравСнства ai < min ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСравСнство ai > max. Π’ ΡΠ»ΡƒΡ‡Π°ΠΈ выполнСния условия ai > max Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² max =ai ΠΈ Π² n_ max = i.

Для поиска Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ экстрСмума ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ min (max). Π’ ΡΡ‚ΠΎΠΌ случаи ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива опрСдСляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π΅Π³ΠΎ индСксу n_min (n_max) (рисунок 2.17).

/*поиск минимального элСмСнта*/

n_min=in;

for (i=in+1; i

if (a[i]

n_min=i;

/*поиск максимального элСмСнта*/

n_max=in;

for (i=in+1; i

if (a[i]>a[n_max])

n_max=i;

Рисунок 2.17. ГрафичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ поиска минимального элСмСнта Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΠΎ Π΅Π³ΠΎ индСксу ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования рассмотрСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² прСдставлСн Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 2.

2.10 ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массивов

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

k=0;

for (i=in;i

{

y[k]=a[i];

k++;

}

Рисунок 2.18 Алгоритм ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ создания ΠΊΠΎΠΏΠΈΠΈ массива Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² in ΠΈ ik, Π² ΠΌΠ°ΡΡΠΈΠ² y[ ] ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ элСмСнты ΠΈΠ· ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива a[ ]. Π’Π°ΠΊ для копирования всСх элСмСнтов массива a[ ] Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ in=0, ik=n (n — количСство элСмСнтов массива a[ ]). ΠŸΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ части массива, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с 3 ΠΏΠΎ 9, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ in=2 (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нумСрация элСмСнтов массива Π² Π‘++, начинаСтся с Π½ΡƒΠ»Ρ) ΠΈ ik=9.

2.10 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива

Π’ Π·Π°Π΄Π°Ρ‡Π°Ρ… формирования Π½ΠΎΠ²ΠΎΠ³ΠΎ массива трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ массива (массивов) ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. Π’ Π½ΠΎΠ²Ρ‹ΠΉ массив элСмСнты заносятся, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ начиная с Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ индСкса. Максимально число элСмСнтов Π² Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ массивС ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ количСства элСмСнтов Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ массивС (массивах), минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ равняСтся Π½ΡƒΠ»ΡŽ. Π’ ΡΡ‚ΠΎΠΌ случаи считаСтся, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ массив Π½Π΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½.

ΠŸΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… массивов ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ динамичСскиС массивы, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ число Π΅Π³ΠΎ элСмСнтов Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎ. Алгоритм создания Π½ΠΎΠ²ΠΎΠ³ΠΎ массива схоТ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ копирования (рисунок 2.19).

k=0;

for (i=in;i

{

if (условиС)

{

y[k]=a[i];

k++;

}

}

Рисунок 2.19 Алгоритм ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ формирования Π½ΠΎΠ²ΠΎΠ³ΠΎ массива Для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ записи элСмСнтов Π² Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ пСрСмСнная k — счСтчик элСмСнтов Π² Π½ΠΎΠ²ΠΎΠΌ массивС. ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ принимаСтся Ρ€Π°Π²Π½ΠΎΠΉ Π½ΡƒΠ»ΡŽ, Ρ‚. Π΅ ΡΡ‡ΠΈΡ‚аСтся Ρ‡Ρ‚ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ массивС Π½Π΅Ρ‚ элСмСнтов. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ массивС элСмСнта ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰Π΅Π³ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ заносится Π² Π½ΠΎΠ²Ρ‹ΠΉ массив Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ k, Π° ΠΏΠΎΡΠ»Π΅ счСтчик элСмСнтов увСличиваСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ (k=k+1). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ всСго исходного массива ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ счСтчика k ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, сформирован Π½ΠΎΠ²Ρ‹ΠΉ массив (k>0) ΠΈ ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π΅ΠΌ элСмСнтов (k).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2.8

Π”Π°Π½Ρ‹ Π΄Π²Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массива X ΠΈ Y. НСобходимо ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив Z ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов массива X стоящих Π½Π° Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² массива Y Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива X.

массив ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ

РСшСниС

Если число элСмСнтов массива X — n, Π° ΠΌΠ°ΡΡΠΈΠ²Π° Y — m, Ρ‚ΠΎ Ρ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ массива Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ элСмСнты стоящиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах, максимальноС число элСмСнтов Π² Π½ΠΎΠ²ΠΎΠΌ массивС Z ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ m+n/2 элСмСнтов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для массива Z с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° динамичСского выдСлСния памяти (new) Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ m+[n/2] ячСйки памяти ([n/2] — цСлая Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ). ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика элСмСнтов Π½ΠΎΠ²ΠΎΠ³ΠΎ массива k принимаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ.

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ массива X Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты, стоящиС Π½Π° Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах, Ρ‚. Π΅. ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π° i измСняСтся ΠΎΡ‚ in=1 Π΄ΠΎ ik=n с ΡˆΠ°Π³ΠΎΠΌ 2. УсловиС ΠΎΡ‚Π±ΠΎΡ€Π° элСмСнтов ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ массива X[i]>0. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ массива Y ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ всС Π΅Π³ΠΎ элСмСнты, Ρ‚. Π΅. ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π° i измСняСтся ΠΎΡ‚ in=0 Π΄ΠΎ ik=m с ΡˆΠ°Π³ΠΎΠΌ 1. УсловиС ΠΎΡ‚Π±ΠΎΡ€Π° элСмСнтов ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ массива — Y[i]> X[0].

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ формирования Π½ΠΎΠ²ΠΎΠ³ΠΎ массива ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставлСны Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.20.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

x[] - статичСский (исходный) массив;

n — число элСмСнтов массива X;

y[] - статичСский (исходный) массив;

m — Ρ‡ΠΈΡΠ»ΠΎ элСмСнтов массива;

z[] - динамичСский (Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ) массив

k - счСтчик элСмСнтов Π½ΠΎΠ²ΠΎΠ³ΠΎ массива Z;

i — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΠΊΠ»Π°;

#include

main ()

{

int k, n, m, i, x[10], y[10];

puts(«Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число элСмСнтов массива X:»);

scanf («%d» ,&n);

for (i=0;i

{

printf («x[%2d]=», i);

scanf («%d» ,&x[i]);

}

puts(«Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число элСмСнтов массива Y:»);

scanf («%d» ,&m);

for (i=0;i

{

printf («y[%2d]=», i);

scanf («%d» ,&y[i]);

}

int *z=new int[15]; // Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ массив Z

k=0;

for (i=1;i

{

if (x[i]>0)

{

z[k]=x[i];

k++;

}

}

for (i=0;i

{

if (y[i]>x[0])

{

z[k]=y[i];

k++;

}

}

puts («ΠœΠ°ΡΡΠΈΠ² X:»);

for (i=0;i

printf («x[%d]=%dn», i, x[i]);

puts («ΠœΠ°ΡΡΠΈΠ² Y:»);

for (i=0;i

printf («y[%d]=%dn», i, y[i]);

if(k==0)

puts(«ΠœΠ°ΡΡΠΈΠ² Z Π½Π΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎ-Π²Π°Π½.»);

else

{

puts («ΠœΠ°ΡΡΠΈΠ² Z:»);

for (i=0;i

printf («z[%d]=%dn», i, z[i]);

}

delete[] z; // освобоТдСниС памяти

}

Рисунок 2.20. ГрафичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 2.8

1. ΠœΡƒΠΊ № 3089. ΠšΡ€Π°Π²Ρ‡Π΅Π½ΠΊΠΎ О. А., ΠœΠ°Ρ€Ρ‚Ρ‹Π½Π΅Π½ΠΊΠΎ А. М. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘: ΠΏΡ€Π°ΠΊΡ‚. пособиС ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π»Π°Π±. ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ». Ρ€Π°Π±ΠΎΡ‚ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅» для студСнтов Ρ‚Π΅Ρ…Π½. ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Π΄Π½Π΅Π². ΠΈ Π·Π°ΠΎΡ‡. Ρ„ΠΎΡ€ΠΌ обучСния Π“ΠΎΠΌΠ΅Π»ΡŒ: Π“Π“Π’Π£ ΠΈΠΌ. ΠŸ. О. Π‘ΡƒΡ…ΠΎΠ³ΠΎ, 2005. — 33 с.

2. ΠœΡƒΠΊ № 3106. ΠšΡ€Π°Π²Ρ‡Π΅Π½ΠΊΠΎ О. А., ΠšΠΎΡ€ΠΎΠ±Π΅ΠΉΠ½ΠΈΠΊΠΎΠ²Π° Π•. Π’. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΈ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘: пособиС ΠΏΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅" Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅" для студСнтов Ρ‚Π΅Ρ…Π½. ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Π΄Π½Π΅Π². ΠΈ Π·Π°ΠΎΡ‡. Ρ„ΠΎΡ€ΠΌ обучСния Π“ΠΎΠΌΠ΅Π»ΡŒ: Π“Π“Π’Π£ ΠΈΠΌ. ΠŸ. О. Π‘ΡƒΡ…ΠΎΠ³ΠΎ, 2005. — 33 с

3. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ курс: ΡƒΡ‡Π΅Π±. пособиС / ΠΏΠΎΠ΄ Ρ€Π΅Π΄. Π‘. Π’. Π‘ΠΈΠΌΠΎΠ½ΠΎΠ²ΠΈΡ‡Π°. — 2-Π΅ ΠΈΠ·Π΄. — Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³: ΠŸΠΈΡ‚Π΅Ρ€, 2007. — 639с.: ΠΈΠ». — (Π£Ρ‡Π΅Π±Π½ΠΈΠΊ для Π²ΡƒΠ·ΠΎΠ²). — Π‘ΠΈΠ±Π»ΠΈΠΎΠ³Ρ€.: с.631−632. — ISBN 5−94 723−752−0

4. Π‘/Π‘ ++. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня / Π’. А. Павловская. — Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³: ΠŸΠΈΡ‚Π΅Ρ€, 2006. — 460с.: ΠΈΠ». — (Π£Ρ‡Π΅Π±Π½ΠΈΠΊ для Π²ΡƒΠ·ΠΎΠ²). — Π‘ΠΈΠ±Π»ΠΈΠΎΠ³Ρ€.:с.383. — ISBN 5−94 723−568−4.

5. Π‘#. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня / Π’. А. Павловская. — Π‘Π°Π½Ρ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³: ΠŸΠΈΡ‚Π΅Ρ€, 2007. — 432с.: ΠΈΠ». — (Π£Ρ‡Π΅Π±Π½ΠΈΠΊ для Π²ΡƒΠ·ΠΎΠ²). — Π‘ΠΈΠ±Π»ΠΈΠΎΠ³Ρ€.: с.425−426. — ISBN 5−91 180−174−4.

6. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°: ΡƒΡ‡Π΅Π±. для Π²ΡƒΠ·ΠΎΠ² / Π’. А. ΠžΡΡ‚Ρ€Π΅ΠΉΠΊΠΎΠ²ΡΠΊΠΈΠΉ. — ΠœΠΎΡΠΊΠ²Π°: Π’Ρ‹ΡΡˆ. шк., 2000. — 511с.: ΠΈΠ». — Π‘ΠΈΠ±Π»ΠΈΠΎΠ³Ρ€.: с. 508. — ISBN 5−06−3 533−6.

7. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°: Π£Ρ‡Π΅Π±Π½ΠΈΠΊ /Под Ρ€Π΅Π΄. ΠŸΡ€ΠΎΡ„. Н. Π’. ΠœΠ°ΠΊΠ°Ρ€ΠΎΠ²ΠΎΠΉ. -М.: Ѐинансы ΠΈ ΡΡ‚атистика, 1998.

8. ΠšΠ°ΡΠ°Ρ‚ΠΊΠΈΠ½ А. И., Π’Π°Π»ΡŒΠ²Π°Ρ‡Π΅Π² А. Н. ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘И: ΠΎΡ‚ Turbo C ΠΊ Borland C++: Π‘ΠΏΡ€Π°Π².пособиС. — ΠœΠ½.: Π’Ρ‹Ρˆ.шк., 1992. — 240 с.

9. Π’ΠΎΠΏΠΏ Π£., Π€ΠΎΡ€Π΄ Π£. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘++: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π».-М.: Π‘Π˜ΠΠžΠœ, 1994. — 816 с.

10. ΠšΡ€ΡΡ‡ΠΊΠΎΠ² А. Π’., Π‘ΡƒΡ…ΠΈΠ½Π° И. Π’., Вомшин Π’. К. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘ ΠΈ Π‘++. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌ: Π£Ρ‡Π΅Π±Π½. ПособиС для Π²ΡƒΠ·ΠΎΠ². — Πœ.: Горячая лининия — Π’Π΅Π»Π΅ΠΊΠΎΠΌ, 2000 — 344 с.

11. Бтрауструп Π‘. Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ++: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π».- М.: Π Π°Π΄ΠΈΠΎ ΠΈ ΡΠ²ΡΠ·ΡŒ, 1991. — 352 с.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

Π—Π°Π΄Π°Ρ‡Π° 1.

ВычислСниС сумм, количСств ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ элСмСнтов массива

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π½ массив чисСл. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π°:

1) Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива;

2) Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа;

3) Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствия Π² ΡΠΎΠΎΡ‚вСтствии с ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ;

4) Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ исходныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ вычислСний.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Массив ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ статичСский.

Π—Π°Π΄Π°Π½ΠΈΠ΅:

Π’ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС A Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ n, Π½Π°ΠΉΡ‚ΠΈ количСство чисСл, ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ X, ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл, стоящих Π½Π° Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… мСстах.

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