Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования C++. ΠŸΡΡ‚ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 7

Автор Π‘Ρ‚Π΅Π½Π»ΠΈ Π›ΠΈΠΏΠΏΠΌΠ°Π½

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ достигнут ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° (ΠΈΠ»ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка Π²Π²ΠΎΠ΄Π°), условиС остаСтся истинным ΠΈ выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while. Π’Π΅Π»ΠΎ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ составного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присвоСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ value ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sum. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ условия Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» while. По Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° выполняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sum, сопровоТдаСмоС манипулятором endl.

Π’Π²ΠΎΠ΄ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

Π Π°Π·Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ значСния. Для Π²Π²ΠΎΠ΄Π° символа ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Windows достаточно Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш <Ctrl+z> (удСрТивая Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <Ctrl>, Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <z>), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <Enter> ΠΈΠ»ΠΈ <Return>. На машинС с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой UNIX, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Mac OS-X, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ комбинация клавиш <Ctrl+d>.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ компиляции

Одной ΠΈΠ· Π·Π°Π΄Π°Ρ‡ компилятора являСтся поиск ошибок Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, бСзусловно, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π΄Π΅Π»Π°Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π» Π΅Π΅ Π°Π²Ρ‚ΠΎΡ€, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ способСн ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ошибки Π² Ρ„ΠΎΡ€ΠΌΠ΅ записи. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ компилятор ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‡Π°Ρ‰Π΅ всСго.

БинтаксичСскиС ошибки. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ грамматичСских ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… языка Π‘++. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ дСмонстрируСт Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС синтаксичСскиС ошибки, снабТСнныС коммСнтариями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΈΡ… ΡΡƒΡ‚ΡŒ.

// ΠΎΡˆΠΈΠ±ΠΊΠ°: отсутствуСт ')' список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main()

int main ( {

 // ошибка: послС endl ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, Π° Π½Π΅ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой

 std::cout << "Read each file." << std::endl:

 // ошибка: ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°

 std::cout << Update master. << std::endl;

 // ошибка: отсутствуСт Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π²ΠΎΠ΄Π°

 std::cout << "Write new master." std::endl;

 // ошибка: отсутствуСт ';' послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return

 return 0

}

Ошибки нСсовпадСния Ρ‚ΠΈΠΏΠ°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π΄Π°Π½Π½Ρ‹Ρ… языка Π‘++ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, являСтся числом Ρ‚ΠΈΠΏΠ° int. Π‘Π»ΠΎΠ²ΠΎ "ΠΏΡ€ΠΈΠ²Π΅Ρ‚" с ΠΏΠ°Ρ€Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ β€” это строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π». ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ошибки нСсовпадСния являСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ цСлочислСнным Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

Ошибки объявлСния. КаТдоС имя, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° языкС Π‘++, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Π½Π°Ρ‡Π°Π»Π΅ объявлСно. ИспользованиС нСобъявлСнного ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ ΠΎΠ± ошибкС. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ ошибками объявлСния являСтся Ρ‚Π°ΠΊΠΆΠ΅ отсутствиС указания пространства ΠΈΠΌΠ΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ std::, ΠΏΡ€ΠΈ доступС ΠΊ ΠΈΠΌΠ΅Π½ΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ орфографичСскиС ошибки Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

#include <iostream>

int main() {

 int v1 = 0, v2 = 0;

 std::cin >> v >> v2; // ошибка: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ "v" Π²ΠΌΠ΅ΡΡ‚ΠΎ "v1"

 // cout Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ std::cout

 cout << v1 + v2 << std::endl;

 return 0;

}

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС содСрТит ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ компилятор считаСт Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ. Π˜ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ сообщСния ΠΎ Π½ΠΈΡ…. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΎΠ΄Π½Π° ошибка ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ появлСнию Π΄Ρ€ΡƒΠ³ΠΈΡ…, поэтому компилятор, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, сообщаСт ΠΎ большСм количСствС ошибок, Ρ‡Π΅ΠΌ имССтся фактичСски. ЦСлСсообразно Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ послС устранСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ошибки ΠΈΠ»ΠΈ нСбольшого количСства Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… ошибок. Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» извСстСн ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, компиляция, ΠΎΡ‚Π»Π°Π΄ΠΊΠ°" (edit-compile-debug).

УпраТнСния Ρ€Π°Π·Π΄Π΅Π»Π° 1.4.3

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.16. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сумму Π½Π°Π±ΠΎΡ€Π° Ρ†Π΅Π»Ρ‹Ρ… чисСл, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° cin.

1.4.4. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if

Подобно Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ языков, Π‘++ прСдоставляСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ подсчСта количСства ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… совпадСний Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²ΠΎ Π²Π²ΠΎΠ΄Π΅:

#include <iostream>

int main() {

 // currVal - подсчитываСмоС число; Π½ΠΎΠ²Ρ‹Π΅ значСния Π±ΡƒΠ΄Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² val

 int currVal = 0, val = 0;

 // ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число ΠΈ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

 // для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

 if (std::cin >> currVal) {

  int cnt = 1; // ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ счСт для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния

  while (std::cin >> val) { // Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ числа

   if (val == currVal)      // Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎ ΠΆΠ΅

    ++cnt;                  // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 1 ΠΊ cnt

   else {                   // Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС вывСсти счСт для

                            // ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ значСния

    std::cout << currVal << " occurs "

              << ent << " times" << std::endl;

    currVal = val;          // Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

    cnt = 1;                // ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ счСтчик

   }

  } // Ρ†ΠΈΠΊΠ» while Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ся здСсь

  // Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ вывСсти счСт для послСднСго значСния

  std::cout << currVal << " occurs "

            << cnt << " times" << std::endl;

 } // ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if заканчиваСтся здСсь

 return 0;

}

Если Π·Π°Π΄Π°Ρ‚ΡŒ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Π²ΠΎΠ΄:

42 42 42 42 42 55 55 62 100 100 100

Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

42 occurs 5 times

55 occurs 2 times

62 occurs 1 times

100 occurs 3 times

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠ° ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ val ΠΈ currVal: currVal Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ подсчитываСмоС число, Π° пСрСмСнная val β€” ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ число, Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅ ΠΈΠ· Π²Π²ΠΎΠ΄Π°. Новыми ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π²ΠΎΠ΄ Π½Π΅ пуст.

if (std::cin >> currVal) {

 // ...

} // ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ся здСсь

Подобно ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ while, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if провСряСт условиС. УсловиС Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ if Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ currVal. Если Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ условиС истинно ΠΈ выполняСтся Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобки послС условия. Π­Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкой нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ return.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ подсчитываСмоС стало извСстно, опрСдСляСтся пСрСмСнная cnt, содСрТащая счСт совпадСний Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа. Для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ чтСния чисСл со стандартного устройства Π²Π²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ†ΠΈΠΊΠ» while, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

Π’Π΅Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° while являСтся Π±Π»ΠΎΠΊ, содСрТащий Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if:

if (val == currVal) // Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎ ΠΆΠ΅

 ++cnt;             // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 1 ΠΊ cnt

else {              // Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС вывСсти счСт для

                    // ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ значСния

 std::cout << currVal << " occurs "

           << cnt << " times" << std::endl;

 currVal = val;     // Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

 cnt = 1;           // ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ счСтчик

}

УсловиС Π² этом ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ if ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ равСнства Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… val ΠΈ currVal ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ равСнства (equality operator) (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ==). Если условиС истинно, выполняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ нСпосрСдствСнно Π·Π° условиСм. Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ осущСствляСт ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ cnt, означая ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ currVal.

Если условиС Π»ΠΎΠΆΠ½ΠΎ (Ρ‚.Π΅. значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… val ΠΈ currVal Π½Π΅ Ρ€Π°Π²Π½Ρ‹), выполняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова else. Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΊΠΆΠ΅ являСтся Π±Π»ΠΎΠΊΠΎΠΌ, состоящим ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Π΄Π²ΡƒΡ… присвоСний. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ счСт для значСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присвоСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ cnt Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ currVal β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Ρ‹Π½Π΅ являСтся Π½ΠΎΠ²Ρ‹ΠΌ подсчитываСмым числом.

Π’ языкС Π‘++ для присвоСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ =, Π° для ΠΏΡ€ΠΎ Π²Π΅Ρ€ΠΊΠΈ равСнства β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ==. Π’ условии ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ распространСна ошибка, ΠΊΠΎΠ³Π΄Π° Π² условии ΠΏΠΈΡˆΡƒΡ‚ =, Π° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ==.

УпраТнСния Ρ€Π°Π·Π΄Π΅Π»Π° 1.4.4

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.17. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π² рассматриваСмой здСсь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ всС Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ значСния Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹? Π§Ρ‚ΠΎ Ссли Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅Ρ‚?