рд╢реИрдирди рдлрд╛рдиреЛ рдПрд▓рдЧреЛрд░рд┐рджрдо

рд╢реИрдирди-рдлрд╝рд╛рдиреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд╣рд▓реЗ рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдЕрдореЗрд░рд┐рдХреА рд╡реИрдЬреНрдЮрд╛рдирд┐рдХреЛрдВ рд╢реИрдирди рдФрд░ рдлрд╝рд╛рдиреЛ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рд╣рдлрд╝рдореИрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрдд рд╕рдорд╛рдирддрд╛ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рддреЛ, рдЕрдХреНрд╕рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдЪрд░рд┐рддреНрд░ рдЫреЛрдЯреА рд▓рдВрдмрд╛рдИ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рджреБрд░реНрд▓рдн рдПрдХ рд▓рдВрдмреА рд▓рдВрдмрд╛рдИ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрджрд▓реЗ рдореЗрдВ, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреЛрдб рдЙрдкрд╕рд░реНрдЧ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдб рд╢рдмреНрджреЛрдВ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрдХреНрд░рдо рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдПрдХ рд╢реБрд░реВрдЖрдд рд╣реИред

рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛрдиреЛрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рддреЛ, рд╣рдлрдореИрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
  1. рдЗрдирдкреБрдЯ рдЧреИрд░-рдмрдврд╝рддреА рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЖрддрд╛ рд╣реИ ред
  2. рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рджреЛ рд╕рдмрд╕реЗ рдХрдо-рдЖрд╡реГрддреНрддрд┐ рд╡рд╛рд▓реЗ рдЕрдХреНрд╖рд░ рдЪреБрдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрди "рдкрддреНрддрд┐рдпреЛрдВ" рдХреА рджреЛ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдпреЛрдЧ)ред
  3. рд╡рдВрд╢рдЬ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЙрдирдХреЗ рд╕реНрдерд╛рди рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА "рд╢рд╛рдЦрд╛рдУрдВ" рдХреЛ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ: рдмрд╛рдИрдВ рд╢рд╛рдЦрд╛ рдХреЛ "1", рджрд╛рдИрдВ рдУрд░ "0" рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
  4. рдЪрд░рдг рджреЛ рдХреЛ рдореБрдЦреНрдп рдорд╛рддрд╛-рдкрд┐рддрд╛ рддрдХ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, "рдореВрд▓", рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЫрд╡рд┐

рд╢реИрдирди-рдлрд╝рд╛рдиреЛ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
  1. рдЗрдирдкреБрдЯ рдЧреИрд░-рдмрдврд╝рддреА рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЖрддрд╛ рд╣реИред
  2. рдПрдХ рдордзреНрдп рд╣реИ рдЬреЛ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЛ рд▓рдЧрднрдЧ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпреЗ рднрд╛рдЧ (рд╡рд░реНрдгрдорд╛рд▓рд╛ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдпреЛрдЧ) рд▓рдЧрднрдЧ рдмрд░рд╛рдмрд░ рд╣реИрдВред "1" рдХреЛ рдмрд╛рдИрдВ рдУрд░, "0" рдХреЛ рджрд╛рдИрдВ рдУрд░ рдХреЗ рд▓рд┐рдП рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреЗрдбрд╝ рдХреЗ рдкрддреНрддреЗ рдорд┐рд▓рддреЗ рд╣реИрдВ
  3. рдЪрд░рдг 2 рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╣рдореЗрдВ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдПрдХ рддрддреНрд╡ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЪрд╛рджрд░


рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдлрд╝рдореИрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрддреНрддрд┐рдпреЛрдВ рд╕реЗ рдЬрдбрд╝ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╢реИрдирди-рдлрд╝рд╛рдиреЛ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЬрдбрд╝ рд╕реЗ рдкрддреНрддрд┐рдпреЛрдВ рдХреА рдУрд░ рдмрдврд╝рддрд╛ рд╣реИред

рдЦреИрд░, рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ рд╢реИрдирди-рдлрд╝рд╛рдиреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЛ рдХрд╣рд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪреА рджреВрдВрдЧрд╛ред

 program ShennonFano; uses crt; const a :array[1..6] of char = ('a','b','c','d','e','f'); {  } af:array[1..6] of integer = (10, 8, 6, 5, 4, 3); {   } {       } procedure SearchTree(branch:char; full_branch:string; start_pos:integer; end_pos:integer); var dS:real; {    } i, m, S:integer; { m -     , S -  ,   } c_branch:string; {      } begin {         } if (a<>' ') then c_branch := full_branch + branch else c_branch := ''; {  :    ,    } if (start_pos = end_pos) then begin WriteLn(a[start_pos], ' = ', c_branch); exit; end; {       } dS := 0; for i:=start_pos to end_pos do dS:= dS + af[i]; dS := dS/2; {      for, while, repeat   } S := 0; i := start_pos; m := i; while ((S+af[i]<dS) and (i<end_pos)) do begin S := S + af[i]; inc(i); inc(m); end; {     } SearchTree('1', c_branch, start_pos, m); {    } SearchTree('0', c_branch, m+1, end_pos); end; begin WriteLn('Press <enter> to show'); ReadLn; ClrScr; {   ,       } SearchTree(' ',' ', 1, 6); ReadLn; end; 
program ShennonFano; uses crt; const a :array[1..6] of char = ('a','b','c','d','e','f'); { } af:array[1..6] of integer = (10, 8, 6, 5, 4, 3); { } { } procedure SearchTree(branch:char; full_branch:string; start_pos:integer; end_pos:integer); var dS:real; { } i, m, S:integer; { m - , S - , } c_branch:string; { } begin { } if (a<>' ') then c_branch := full_branch + branch else c_branch := ''; { : , } if (start_pos = end_pos) then begin WriteLn(a[start_pos], ' = ', c_branch); exit; end; { } dS := 0; for i:=start_pos to end_pos do dS:= dS + af[i]; dS := dS/2; { for, while, repeat } S := 0; i := start_pos; m := i; while ((S+af[i]<dS) and (i<end_pos)) do begin S := S + af[i]; inc(i); inc(m); end; { } SearchTree('1', c_branch, start_pos, m); { } SearchTree('0', c_branch, m+1, end_pos); end; begin WriteLn('Press <enter> to show'); ReadLn; ClrScr; { , } SearchTree(' ',' ', 1, 6); ReadLn; end;

рдЦреИрд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЖрдВрдХрдбрд╝реЗ рдКрдкрд░ рдХреА рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/In137766/


All Articles