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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ. ИзданиС 3-Π΅, исправлСнноС». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 8

Автор Π‘Ρ€Π°ΠΉΠ°Π½ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½

if (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅)

 ΠΈΠ½ΡΡ‚рукция1

else

 ΠΈΠ½ΡΡ‚рукция2

Π’ конструкции if-else выполняСтся ΠΎΠ΄Π½Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π΄Π²ΡƒΡ… инструкций. Если Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ истинно, Ρ‚ΠΎ выполняСтся инструкция1, Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ - инструкция2. КаТдая ΠΈΠ· этих Π΄Π²ΡƒΡ… инструкций прСдставляСт собой Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½Ρƒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π»ΠΈΠ±ΠΎ нСсколько, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки. Π’ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ послС else стоит инструкция if, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ двумя Ρ‚Π°ΠΊΠΈΠΌΠΈ инструкциями.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.11. Как ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ подсчСта слов? Какой Π²Π²ΠΎΠ΄ вСроятнСС всСго ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ ошибки, Ссли ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹?

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.12. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ содСрТимоС своСго Π²Π²ΠΎΠ΄Π°, помСщая ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ слову Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС.

1.6 ΠœΠ°ΡΡΠΈΠ²Ρ‹

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

#include β€Ήstdio.hβ€Ί


/* подсчСт Ρ†ΠΈΡ„Ρ€, символов-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… символов */

main()

{

 int с, i, nwhite, nother;

 int ndigit[10];


 nwhite = nother = 0;

 for (i = 0; i β€Ή 10, ++i)

  ndigit[i]= 0;


 while ((c = getchar())!= EOF)

  if (c β€Ί='0' && с β€Ή= '9')

   ++ndigit[c - '0'];

  else if (c == ' ' || c == '\n' || c == '\t')

   ++nwhite;

  else

   ++nother;


 printf("Ρ†ΠΈΡ„Ρ€Ρ‹ =");

 for (i = 0; i β€Ή 10; ++i)

  printf("%d", ndigit[i]);

 printf(", символы-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ =%d, ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ =%d\n", nwhite, nother);

}

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Ρ†ΠΈΡ„Ρ€Ρ‹ = 9 3 0 0 0 0 0 0 0 1, символы-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ = 123, ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ = 345

ОбъявлСниС

int ndigit[10];

ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ndigit массивом ΠΈΠ· 10 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° int. Π’ Π‘ΠΈ элСмСнты массива всСгда Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ начиная с нуля, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ элСмСнтами этого массива Π±ΡƒΠ΄ΡƒΡ‚ ndigit[0], ndigit[1], …, ndigit[9], Ρ‡Ρ‚ΠΎ учитываСтся Π² for-Ρ†ΠΈΠΊΠ»Π°Ρ… (ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ массива).

ИндСксом ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любоС Ρ†Π΅Π»ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌΠΎΠ΅ Ρ†Π΅Π»Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ i) ΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ константами.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° опираСтся Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ свойства ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ†ΠΈΡ„Ρ€. НапримСр, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

 if (c β€Ί= '0' && c β€Ή= '9') …

опрСдСляСт, являСтся Π»ΠΈ находящийся Π² c символ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ. Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ

c -'0'

Π΅ΡΡ‚ΡŒ числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€Ρ‹. Π‘ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ справСдливо Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли для ряда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ '0','1',…, '9' ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° 1 большС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π²ΠΎ всСх Π½Π°Π±ΠΎΡ€Π°Ρ… символов.

По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ, значСния Ρ‚ΠΈΠΏΠ° char ΡΠ²Π»ΡΡŽΡ‚ΡΡ просто ΠΌΠ°Π»Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ константы Ρ‚ΠΈΠΏΠ° char Π² арифмСтичСских выраТСниях ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ значСниям Ρ‚ΠΈΠΏΠ° int. Π­Ρ‚ΠΎ ΠΈ СстСствСнно, ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, c-'0' Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ значСниями ΠΎΡ‚ 0 Π΄ΠΎ 9, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ символам ΠΎΡ‚ '0' Π΄ΠΎ '9', хранящимся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ c. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ выраТСния являСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ индСксом для массива ndigit.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ опрСдСляСт, являСтся символ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ, символом-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΈΠ»ΠΈ Ρ‡Π΅ΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ½Ρ‹ΠΌ.

if (c β€Ί= '0' && c β€Ή= '9')

 ++n[c-'0'];

else if (c ==' ' || c == '\n' || c == '\t')

 ++nwhite;

else

 ++nother;

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Π²ΠΈΠ΄Π°

if (условиС1)

 ΠΈΠ½ΡΡ‚рукция1

else if (условиС2)

 ΠΈΠ½ΡΡ‚рукция2

:

:

else

 ΠΈΠ½ΡΡ‚рукцияn

часто примСняСтся для Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Условия Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠΎ порядку Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ свСрху Π²Π½ΠΈΠ· Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½ΠΎ; Π² этом случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π΅ΠΌΡƒ инструкция, ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° всСй конструкции Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. (Π›ΡŽΠ±Π°Ρ ΠΈΠ· инструкций ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ инструкций Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках.) Если Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· условий Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½ΠΎ, выполняСтся послСдняя инструкция, располоТСнная сразу Π·Π° else, Ссли таковая имССтся. Если ΠΆΠ΅ else ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π° Π½Π΅ΠΉ инструкции Π½Π΅Ρ‚ (ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ подсчСта слов), Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ дСйствия Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ производятся. ΠœΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ if ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΌ else ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π²ΠΈΠ΄Π°

else if (условиС)

 ΠΈΠ½ΡΡ‚рукция

Когда ΠΈΡ… нСсколько, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ здСсь ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ. Если ΠΆΠ΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ if ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ else, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΄Π»ΠΈΠ½Π½ΠΎΠΌ каскадС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ тСкст окаТСтся слишком Π±Π»ΠΈΠ·ΠΊΠΎ ΠΏΡ€ΠΈΠΆΠ°Ρ‚Ρ‹ΠΌ ΠΊ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ страницы.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ switch, Ρ€Π΅Ρ‡ΡŒ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π² Π³Π»Π°Π²Π΅ 3, обСспСчиваСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ изобраТСния ΠΌΠ½ΠΎΠ³ΠΎΠΏΡƒΡ‚Π΅Π²ΠΎΠ³ΠΎ вСтвлСния Π½Π° языкС Π‘ΠΈ. Он Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Π² частности, Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° условиСм ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° слуТит совпадСниС значСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выраТСния цСлочислСнного Ρ‚ΠΈΠΏΠ° с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· констант, входящих Π² Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ switch, приводится Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ 3.4.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.13. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‰ΡƒΡŽ гистограммы Π΄Π»ΠΈΠ½ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… слов. Гистограмму Π»Π΅Π³ΠΊΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ полосами. РисованиС Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ полосами - Π±ΠΎΠ»Π΅Π΅ трудная Π·Π°Π΄Π°Ρ‡Π°.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.14. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‰ΡƒΡŽ гистограммы частот встрСчаСмости Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов.

1.7 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π‘ΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Ρ‚Ρƒ ΠΆΠ΅ Ρ€ΠΎΠ»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ПаскалС. Ѐункция обСспСчиваСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ вычислСниС ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌ Π΄Π°Π»Π΅Π΅, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ написаны, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ сдСланы, достаточно Π·Π½Π°Ρ‚ΡŒ лишь, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡƒΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π‘ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½, Π»Π΅Π³ΠΎΠΊ ΠΈ эффСктивСн. НСрСдко Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ лишь Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ‹: ΠΎΠ½ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΠ΄Π½ΠΎΠΉ-СдинствСнной Ρ†Π΅Π»ΡŒΡŽ - ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ пользовались Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ функциями Π²Ρ€ΠΎΠ΄Π΅ main, getchar ΠΈ putchar, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ настала ΠΏΠΎΡ€Π° Π½Π°ΠΌ самим Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ Π‘ΠΈ Π½Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° возвСдСния Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π²Ρ€ΠΎΠ΄Π΅ ** Π² Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ power(m, n), которая Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ m Π² Ρ†Π΅Π»ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ n. Π’Π°ΠΊ, power(2, 5) ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 32. На самом Π΄Π΅Π»Π΅ для практичСского примСнСния эта функция ΠΌΠ°Π»ΠΎΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ лишь ΠΌΠ°Π»Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ стСпСнями, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½Π° Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. (Π’ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π΅ΡΡ‚ΡŒ функция pow(x, y), Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π°Ρ x Π² стСпСни y.)

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ power ΠΈ Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽΡΡ Π΅Π΅ услугами, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ вся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

#include β€Ήstdio.hβ€Ί


int power(int m, int n);


/* тСст Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ power */

main()

{

 int i;

 for (i = 0; i β€Ή 10; ++i)

  printf("%d %d %d\n", i, power(2,i), power(-3,i));

 return 0;

}


/* Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡ‚ base Π² n-ю ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ, n β€Ί= 0 */

int power(int base, int n)

{

 int i, p;


 p = 1;

 for (i = 1; i β€Ή= n; ++i)

  p = p * base;

 return p;

}

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ любой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

Ρ‚ΠΈΠΏ-Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° имя-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ)

{

 ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡ

 ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ

}

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² любом порядкС Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… исходных Ρ„Π°ΠΉΠ»Π°Ρ…, Π½ΠΎ любая функция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ располоТСна Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌ. Если исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ распрСдСлСн ΠΏΠΎ нСскольким Ρ„Π°ΠΉΠ»Π°ΠΌ, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, Π²Π°ΠΌ придСтся ΡΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько большС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°; Π½ΠΎ это ΡƒΠΆΠ΅ относится ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС, Π° Π½Π΅ ΠΊ языку. Пока ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ находятся Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ достаточно Ρ‚Π΅Ρ… Π·Π½Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π‘ΠΈ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main ΠΊ power ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Π²Π°ΠΆΠ΄Ρ‹.