home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / k-r.doc / c_5.doc < prev    next >
Encoding:
Text File  |  1988-11-18  |  57.7 KB  |  1,637 lines

  1.                            - 98 -
  2.      
  3.      
  4.      5.ô¬áºáΓѽ¿ ¿ ¼áßß¿óδ
  5.  
  6.      ô¬áºáΓѽ∞ - φΓ« »ÑαѼѡ¡á∩, ß«ñÑαªáΘá∩ áñαÑß ñαπú«⌐ »Ñ-
  7.  αѼѡ¡«⌐. π¬áºáΓѽ¿ «τÑ¡∞ Φ¿α«¬« ¿ß»«½∞ºπεΓß∩ ó ∩ºδ¬Ñ "C".
  8.  ¥Γ« »α«¿ßσ«ñ¿Γ «ΓτáßΓ¿ »«Γ«¼π, τΓ« ¿¡«úñá «¡¿ ñáεΓ Ññ¿¡ßΓ-
  9.  óÑ¡¡πε ó«º¼«ª¡«ßΓ∞ óδαếΓ∞ ¡πª¡«Ñ ñÑ⌐ßΓó¿Ñ, á «ΓτáßΓ¿ »«Γ«-
  10.  ¼π, τΓ« «¡¿ «íδτ¡« óÑñπΓ ¬ í«½ÑÑ ¬«¼»á¬Γ¡δ¼ ¿ φΣΣÑ¬Γ¿ó¡δ¼
  11.  »α«úαá¼¼á¼, τѼ ΓÑ, ¬«Γ«αδÑ ¼«úπΓ íδΓ∞ »«½πτÑ¡δ ñαπú¿¼¿ ß»«-
  12.  ß«íἿ.
  13.      ô¬áºáΓѽ¿ «íδτ¡« ß¼ÑΦ¿óáεΓ ó «ñ¡π ¬πτπ ß «»ÑαáΓ«αἿ
  14.  GOTO, σáαá¬ΓÑਧπ∩ ¿σ ¬á¬ τπñÑß¡δ⌐ ß»«ß«í ¡á»¿ßá¡¿∩ »α«ú-
  15.  αá¼¼, ¬«Γ«αδÑ ¡Ñ󫺼«ª¡« »«¡∩Γ∞. ¥Γ« íѺπß½«ó¡« ß»αAóÑñ½¿ó«,
  16.  Ñß½¿ π¬áºáΓѽ¿ ¿ß»«½∞ºπεΓß∩ íѺºáí«Γ¡«; «τÑ¡∞ »α«ßΓ« óóÑßΓ¿
  17.  π¬áºáΓѽ¿, ¬«Γ«αδÑ π¬áºδóáεΓ ¡á τΓ«-Γ« ß«óÑαΦÑ¡¡« ¡Ñ«ª¿ñá¡-
  18.  ¡«Ñ. Äñ¡á¬«, »α¿ «»αÑñѽѡ¡«⌐ ñ¿ßµ¿»½¿¡Ñ, ¿ß»«½∞º«óá¡¿Ñ π¬á-
  19.  ºáΓѽÑ⌐ »«¼«úáÑΓ ñ«ßΓ¿τ∞ ∩ß¡«ßΓ¿ ¿ »α«ßΓ«Γδ. ê¼Ñ¡¡« φëàáß-
  20.  »Ñ¬Γ ¼δ »«»δΓáѼß∩ ºñÑß∞ »α«¿½½εßΓα¿α«óáΓ∞.
  21.  
  22.       5.1. ô¬áºáΓѽ¿ ¿ áñαÑßá
  23.  
  24.      Æá¬ ¬á¬ π¬áºáΓѽ∞ ß«ñÑαª¿Γ áñαÑß «íΩѬΓá, φΓ« ñáÑΓ ó«º-
  25.  ¼«ª¡«ßΓ∞ "¬«ßóÑ¡¡«ú«" ñ«ßΓπ»á ¬ φΓ«¼π «íΩѬΓπ τÑαѺ π¬áºá-
  26.  Γѽ∞. ÅαÑñ»«½«ª¿¼, τΓ« σ - »ÑαѼѡ¡á∩, ¡á»α¿¼Ñα, Γ¿»á INT, á
  27.  ασ - π¬áºáΓѽ∞, ß«ºñá¡¡δ⌐ ¡Ñ¬¿¼ ÑΘÑ ¡Ñ π¬áºá¡¡δ¼ ß»«ß«í«¼.
  28.  ô¡áα¡á∩ «»Ñαᵿ∩ & óδñáÑΓ áñαÑß «íΩѬΓá, ΓᬠτΓ« «»ÑαáΓ«α
  29.  
  30.   ασ = &σ;
  31.  
  32.      »α¿ßóá¿óáÑΓ áñαÑß σ »ÑαѼѡ¡«⌐ ασ; ú«ó«α∩Γ, τΓ« ασ "π¬á-
  33.  ºδóáÑΓ" ¡á σ. Ä»Ñαᵿ∩ & »α¿¼Ñ¡¿¼á Γ«½∞¬« ¬ »ÑαѼѡ¡δ¼ ¿
  34.  φ½Ñ¼Ñ¡Γá¼ ¼áßß¿óá, ¬«¡ßΓαπ¬µ¿¿ ó¿ñá &(σ-1) ¿ &3 ∩ó½∩εΓß∩ ¡Ñ-
  35.  ºá¬«¡¡δ¼¿. ìѽ∞º∩ ΓᬪѠ»«½πτ¿Γ∞ áñαÑß αÑú¿ßΓα«ó«⌐ »ÑαѼѡ-
  36.  ¡«⌐.
  37.      ô¡áα¡á∩ «»Ñαᵿ∩ * αáßß¼áΓα¿óáÑΓ ßó«⌐ «»Ñαá¡ñ ¬á¬ áñαÑß
  38.  ¬«¡Ñτ¡«⌐ µÑ½¿ ¿ «íαáΘáÑΓß∩ »« φΓ«¼π áñαÑßπ, τΓ«íδ ¿ºó½Ñτ∞
  39.  ß«ñÑন¼«Ñ. æ½Ññ«óáΓѽ∞¡«, Ñß½¿ Y Γ«ªÑ ¿¼ÑÑΓ Γ¿» INT, Γ«
  40.  
  41.   Y = *ασ;
  42.  
  43.  »α¿ßóá¿óáÑΓ Y ß«ñÑন¼«Ñ Γ«ú«, ¡á τΓ« π¬áºδóáÑΓ ασ. Æá¬ »«ß-
  44.  ½Ññ«óáΓѽ∞¡«ßΓ∞
  45.  
  46.   ασ = &σ;
  47.   Y = *ασ;
  48.  
  49.  »α¿ßóá¿óáÑΓ Y Γ« ªÑ ßἫѠº¡áτÑ¡¿Ñ, τΓ« ¿ «»ÑαáΓ«α
  50.  
  51.  Y = X;
  52.  
  53.  ÅÑαѼѡ¡δÑ, πτáßΓóπεΘ¿Ñ ó« óßѼ φΓ«¼ ¡Ñ«íσ«ñ¿¼« «»¿ßáΓ∞:
  54.  
  55.  INT X, Y;
  56.  INT *PX;
  57.      
  58.                            - 99 -
  59.  
  60.  ß «»¿ß᡿Ѽ ñ½∩ X ¿ Y ¼δ πªÑ  ¡Ñ«ñ«¡«¬αáΓ¡«  óßΓαÑτ὿ß∞.
  61.  Ä»¿ßá¡¿Ñ π¬áºáΓѽ∩
  62.  
  63.  INT *PX;
  64.  
  65.  ∩ó½∩ÑΓß∩ ¡«óδ¼ ¿ ñ«½ª¡« αáßß¼áΓα¿óáΓ∞ß∩ ¬á¬ ¼¡Ñ¼«¡¿τÑ߬«Ñ;
  66.  «¡« ú«ó«α¿Γ, τΓ« ¬«¼í¿¡áµ¿∩ *PX ¿¼ÑÑΓ Γ¿» INT. ¥Γ« «º¡áτáÑΓ,
  67.  τΓ« Ñß½¿ PX »«∩ó½∩ÑΓß∩ ó ¬«¡ΓѬßΓÑ *PX, Γ« φΓ« φ¬ó¿óá½Ñ¡Γ¡«
  68.  »ÑαѼѡ¡«⌐ Γ¿»á INT. öá¬Γ¿τÑ߬¿ ß¿¡Γá¬ß¿ß «»¿ßá¡¿∩ »ÑαѼѡ-
  69.  ¡«⌐ ¿¼¿Γ¿απÑΓ ß¿¡Γá¬ß¿ß óδαáªÑ¡¿⌐, ó ¬«Γ«αδσ φΓá »ÑαѼѡ¡á∩
  70.  ¼«ªÑΓ »«∩ó½∩Γ∞ß∩. ¥Γ« ºá¼Ñτá¡¿Ñ »«½Ñº¡« ó« óßÑσ ß½πτá∩σ,
  71.  ßó∩ºá¡¡δσ ß« ß½«ª¡δ¼¿ «»¿ßá¡¿∩¼¿. ìá»α¿¼Ñα,
  72.  
  73.  DOUBLE ATOF(), *DP;
  74.  
  75.  ú«ó«α¿Γ, τΓ« ATOF() ¿ *DP ¿¼ÑεΓ ó óδαáªÑ¡¿∩σ º¡áτÑ¡¿∩ Γ¿»á
  76.  DOUBLE.
  77.  
  78.       éδ ñ«½ª¡δ ΓᬪѠºá¼ÑΓ¿Γ∞, τΓ« ¿º φΓ«ú« «»¿ßá¡¿∩ ß½Ññπ-
  79.  ÑΓ, τΓ« π¬áºáΓѽ∞ ¼«ªÑΓ π¬áºδóáΓ∞ Γ«½∞¬« ¡á «»αÑñѽѡ¡δ⌐ ó¿ñ
  80.  «íΩÑ¬Γ«ó.
  81.       ô¬áºáΓѽ¿ ¼«úπΓ óσ«ñ¿Γ∞ ó óδαáªÑ¡¿∩. ìá»α¿¼Ñα, Ñß½¿ PX
  82.  π¬áºδóáÑΓ ¡á µÑ½«Ñ X, Γ« *PX ¼«ªÑΓ »«∩ó½∩Γ∞ß∩ ó ½εí«¼ ¬«¡-
  83.  ΓѬßΓÑ, úñÑ ¼«ªÑΓ óßΓαÑΓ¿Γ∞ß∩ X. Æá¬ «»ÑαáΓ«α
  84.  
  85.  Y = *PX + 1
  86.  
  87.  »α¿ßóá¿óáÑΓ Y º¡áτÑ¡¿Ñ, ¡á 1 í«½∞ΦÑÑ º¡áτÑ¡¿∩ X;
  88.  
  89.  PRINTF("%D\N", *PX)
  90.  
  91.  »ÑτáΓáÑΓ ΓѬπΘÑÑ º¡áτÑ¡¿Ñ X;
  92.  
  93.  D = SQRT((DOUBLE) *PX)
  94.  
  95.  »«½πτáÑΓ ó D ¬óáñαáΓ¡δ⌐ ¬«αÑ¡∞ ¿º X, »α¿τѼ ñ« »ÑαÑñáτ¿ Σπ¡-
  96.  ¬µ¿¿ SQRT º¡áτÑ¡¿Ñ X »αÑ«íαáºπÑΓß∩ ¬ Γ¿»π DOUBLE. (漫Γα¿
  97.  ú½áóπ 2).
  98.      é óδαáªÑ¡¿∩σ ó¿ñá
  99.  
  100.  Y = *PX + 1
  101.  
  102.  π¡áα¡δÑ «»Ñαᵿ¿ * ¿ & ßó∩ºá¡δ ß« ßó«¿¼ «»Ñαá¡ñ«¼ í«½ÑÑ
  103.  ¬αÑ»¬«, τѼ áα¿Σ¼ÑΓ¿τÑ߬¿Ñ «»Ñαᵿ¿, ΓᬠτΓ« ΓᬫѠóδαáªÑ¡¿Ñ
  104.  íÑαÑΓ Γ« º¡áτÑ¡¿Ñ, ¡á ¬«Γ«α«Ñ π¬áºδóáÑΓ PX, »α¿íáó½∩ÑΓ 1 ¿
  105.  »α¿ßóá¿óáÑΓ αѺπ½∞ΓáΓ »ÑαѼѡ¡«⌐ Y. îδ ó߬«αÑ óÑα¡Ñ¼ß∩ ¬ Γ«-
  106.  ¼π, τΓ« ¼«ªÑΓ «º¡áτáΓ∞ óδαáªÑ¡¿Ñ
  107.  
  108.   Y = *(PX + 1)
  109.  
  110.      æß佬¿ ¡á π¬áºáΓѽ¿ ¼«úπΓ »«∩ó½∩Γ∞ß∩ ¿ ó ½Ñó«⌐ τáßΓ¿
  111.  »α¿ßóá¿óá¡¿⌐. àß½¿ PX π¬áºδóáÑΓ ¡á X, Γ«
  112.  
  113.   *PX = 0
  114.      
  115.                            - 100 -
  116.  
  117.  »«½áúáÑΓ X αáó¡δ¼ ¡π½ε, á
  118.  
  119.   *PX += 1
  120.  
  121.  πóѽ¿τ¿óáÑΓ Ñú« ¡á Ññ¿¡¿µπ, ¬á¬ ¿ óδαáªÑ¡¿Ñ
  122.  
  123.   (*PX)++
  124.  
  125.  èαπú½δѠ߬«í¬¿ ó »«ß½Ññ¡Ñ¼ »α¿¼ÑαÑ ¡Ñ«íσ«ñ¿¼δ; Ñß½¿ ¿σ «»πß-
  126.  Γ¿Γ∞, Γ« »«ß¬«½∞¬π π¡áα¡δÑ «»Ñαᵿ¿, »«ñ«í¡δÑ * ¿ ++, óδ»«½-
  127.  ¡∩εΓß∩ ß»αáóá ¡á½Ñó«, φΓ« óδαáªÑ¡¿Ñ πóѽ¿τ¿Γ PX, á ¡Ñ Γπ »Ñ-
  128.  αѼѡ¡πε, ¡á ¬«Γ«απε «¡ π¬áºδóáÑΓ.
  129.      ê ¡á¬«¡Ñµ, Γᬠ¬á¬ π¬áºáΓѽ¿ ∩ó½∩εΓß∩ »ÑαѼѡ¡δ¼¿, Γ« ß
  130.  ¡¿¼¿ ¼«ª¡« «íαáΘáΓ∞ß∩, ¬á¬ ¿ ß «ßΓá½∞¡δ¼¿ »ÑαѼѡ¡δ¼¿. àß½¿
  131.  PY - ñαπú«⌐ π¬áºáΓѽ∞ ¡á »ÑαѼѡ¡πε Γ¿»á INT, Γ«
  132.  
  133.   PY = PX
  134.  
  135.  ¬«»¿απÑΓ ß«ñÑন¼«Ñ PX ó PY, ó αѺπ½∞ΓáΓÑ τÑú« PY π¬áºδóáÑΓ
  136.  ¡á Γ« ªÑ, τΓ« ¿ PX.
  137.  
  138.       5.2. ô¬áºáΓѽ¿ ¿ áαúπ¼Ñ¡Γδ Σπ¡¬µ¿⌐
  139.  
  140.      Æá¬ ¬á¬ ó "ß" »ÑαÑñáτá áαúπ¼Ñ¡Γ«ó Σπ¡¬µ¿∩¼ «ßπΘÑßΓó½∩ÑΓ-
  141.  ß∩ "»« º¡áτÑ¡¿ε", óδºóá¡¡á∩ »α«µÑñπαá ¡Ñ ¿¼ÑÑΓ ¡Ñ»«ßαÑñßΓ-
  142.  óÑ¡¡«⌐ ó«º¼«ª¡«ßΓ¿ ¿º¼Ñ¡¿Γ∞ »ÑαѼѡ¡πε ¿º óδºδóáεΘÑ⌐ »α«ú-
  143.  αá¼¼δ. ùΓ« ªÑ ñѽáΓ∞, Ñß½¿ óá¼ ñÑ⌐ßΓó¿Γѽ∞¡« ¡áñ« ¿º¼Ñ¡¿Γ∞
  144.  áαúπ¼Ñ¡Γ? ¡á»α¿¼Ñα, »α«úαá¼¼á ß«αΓ¿α«ó¬¿ ºáσ«Γѽá íδ »«¼Ñ-
  145.  ¡∩Γ∞ ñóá ¡áαπΦáεΘ¿σ »«α∩ñ«¬ φ½Ñ¼Ñ¡Γá ß »«¼«Θ∞ε Σπ¡¬µ¿¿ ß
  146.  ¿¼Ñ¡Ñ¼ SWAP. ä½∩ φΓ«ú« ¡Ññ«ßΓáΓ«τ¡« ¡á»¿ßáΓ∞
  147.  
  148.   SWAP(A, B);
  149.  
  150.  «»αÑñѽ¿ó Σπ¡¬µ¿ε SWAP »α¿ φΓ«¼ ß½ÑñπεΘ¿¼ «íαẫ¼:
  151.  
  152.   SWAP(X, Y)      /* WRONG */
  153.   INT X, Y;
  154.   {
  155.      INT TEMP;
  156.  
  157.      TEMP = X;
  158.      X = Y;
  159.      Y = TEMP;
  160.   }
  161.  
  162.  ¿º-ºá  ó맮óá  »«  º¡áτÑ¡¿ε  SWAP ¡Ñ ¼«ªÑΓ ó«ºñÑ⌐ßΓó«óáΓ∞ ¡á
  163.  áúπ¼Ñ¡Γδ A ¿ B ó óδºδóáεΘÑ⌐ Σπ¡¬µ¿¿.
  164.      è ßτáßΓ∞ε, óßÑ ªÑ ¿¼ÑÑΓß∩ ó«º¼«ª¡«ßΓ∞ »«½πτ¿Γ∞  ªÑ½áѼδ⌐
  165.  φΣΣѬΓ.  éδºδóáεΘá∩  »α«úαἼᠻÑαÑñáÑΓ π¬áºáΓѽ¿ »«ñ½ÑªáΘ¿σ
  166.  ¿º¼Ñ¡Ñ¡¿ε º¡áτÑ¡¿⌐:
  167.  
  168.  SWAP(&A, &B);
  169.             
  170.      
  171.                            - 101 -
  172.      
  173.  Γᬠ¬á¬ «»Ñαᵿ∩ & óδñáÑΓ áñαÑß »ÑαѼѡ¡«⌐, Γ«  &A  ∩ó½∩ÑΓß∩
  174.  π¬áºáΓѽѼ ¡á A. é ßἫ⌐ SWAP áαúπ¼Ñ¡Γδ «»¿ßδóáεΓß∩ ¬á¬ π¬á-
  175.  ºáΓѽ¿ ¿ ñ«ßΓπ» ¬ Σá¬Γ¿τÑ߬¿¼ «»Ñαá¡ñá¼ «ßπΘÑßΓó½∩ÑΓß∩ τÑαѺ
  176.  ¡¿σ.
  177.  
  178.  SWAP(PX, PY)    /* INTERCHANGE *PX AND *PY */
  179.  INT *PX, *PY;
  180.  {
  181.     INT TEMP;
  182.  
  183.     TEMP = *PX;
  184.     *PX = *PY;
  185.     *PY = TEMP;
  186.  }
  187.  
  188.      ô¬áºáΓѽ¿ ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γ«ó «íδτ¡« ¿ß»«½∞ºπεΓß∩ ó
  189.  Σπ¡¬µ¿∩σ, ¬«Γ«αδÑ ñ«½ª¡δ ó«ºóαáΘáΓ∞ í«½ÑÑ «ñ¡«ú« º¡áτÑ¡¿∩.
  190.  (¡« ß¬áºáΓ∞, τΓ« SWAP óOºóαáΘáÑΓ ñóá º¡áτÑ¡¿∩, ¡«óδÑ º¡á-
  191.  τÑ¡¿∩ ÑÑ áαúπ¼Ñ¡Γ«ó). é ¬áτÑßΓóÑ »α¿¼Ñαá αáßß¼«Γα¿¼ Σπ¡¬µ¿ε
  192.  GETINT, ¬«Γ«αá∩ «ßπΘÑßΓó½∩ÑΓ »αÑ«íαẫóá¡¿Ñ »«ßΓπ»áεΘ¿σ ó
  193.  ßó«í«½¡«¼ Σ«α¼áΓÑ ñá¡¡δσ, αáºñѽ∩∩ »«Γ«¬ ß¿¼ó«½«ó ¡á µÑ½δÑ
  194.  º¡áτÑ¡¿∩, »« «ñ¡«¼π µÑ½«¼π ºá «ñ¡« «íαáΘÑ¡¿Ñ. öπ¡¬µ¿∩ GETINT
  195.  ñ«½ª¡á ó«ºóαáΘáΓ∞ ½¿í« ¡á⌐ñÑ¡¡«Ñ º¡áτÑ¡¿Ñ, ½¿í« »α¿º¡á¬ ¬«¡-
  196.  µá Σá⌐½á, Ñß½¿ óσ«ñ¡δÑ ñá¡¡δÑ »«½¡«ßΓ∞ε ¿ßτÑα»á¡δ. ¥Γ¿ º¡á-
  197.  τÑ¡¿∩ ñ«½ª¡δ ó«ºóαáΘáΓ∞ß∩ ¬á¬ «Γñѽ∞¡δÑ «íΩѬΓδ, ¬á¬«Ñ íδ
  198.  º¡áτÑ¡¿Ñ ¡¿ ¿ß»«½∞º«óὫß∞ ñ½∩ EOF, ñáªÑ Ñß½¿ φΓ« º¡áτÑ¡¿Ñ
  199.  óó«ñ¿¼«ú« µÑ½«ú«.
  200.      Äñ¡« ¿º αÑΦÑ¡¿⌐, «ß¡«óδóáεΘÑÑß∩ ¡á «»¿ßδóáѼ«⌐ ó ú½áóÑ 7
  201.  Σπ¡¬µ¿¿ óó«ñá SCANF, ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ »α¿ óδσ«ñÑ ¡á ¬«-
  202.  ¡Ñµ Σá⌐½á GETINT ó«ºóαáΘá½á EOF ó ¬áτÑßΓóÑ º¡áτÑ¡¿∩ Σπ¡¬µ¿¿;
  203.  ½εí«Ñ ñαπú«Ñ ó«ºóαáΘÑ¡¡«Ñ º¡áτÑ¡¿Ñ ú«ó«α¿Γ « ¡áσ«ªñÑ¡¿¿ ¡«α-
  204.  ¼á½∞¡«ú« µÑ½«ú«. ù¿ß½Ñ¡¡«Ñ ªÑ º¡áτÑ¡¿Ñ ¡á⌐ñÑ¡¡«ú« µÑ½«ú«
  205.  ó«ºóαáΘáÑΓß∩ τÑαѺ áαúπ¼Ñ¡Γ, ¬«Γ«αδ⌐ ñ«½ªÑ¡ íδΓ∞ π¬áºáΓѽѼ
  206.  µÑ½«ú«. ¥Γá «αúá¡¿ºáµ¿∩ αáºñѽ∩ÑΓ ßΓáΓπß ¬«¡µá Σá⌐½á ¿ τ¿ß-
  207.  ½Ñ¡¡δÑ º¡áτÑ¡¿∩.
  208.      æ½ÑñπεΘ¿⌐ µ¿¬½ ºá»«½¡∩ÑΓ ¼áßß¿ó µÑ½δ¼¿ ß »«¼«Θ∞ε «íαáΘÑ-
  209.  ¡¿⌐ ¬ Σπ¡¬µ¿¿ GETINT:
  210.  
  211.  INT N, V, ARRAY[SIZE];
  212.  
  213.  FOR (N = 0; N < SIZE && GETINT(&V) != EOF; N++)
  214.     ARRAY[N] = V;
  215.  
  216.  é αѺπ½∞ΓáΓÑ ¬áªñ«ú« «íαáΘÑ¡¿∩ V ßΓá¡«ó¿Γß∩ αáó¡δ¼ ß½ÑñπεΘÑ-
  217.  ¼π µÑ½«¼π º¡áτÑ¡¿ε, ¡á⌐ñÑ¡¡«¼π ó« óσ«ñ¡δσ ñá¡¡δσ. ÄíαáΓ¿ΓÑ
  218.  ó¡¿¼á¡¿Ñ, τΓ« ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá GETINT ¡Ñ«íσ«ñ¿¼« π¬áºáΓ∞
  219.  &V á ¡Ñ V. êß»«½∞º«óá¡¿Ñ »α«ßΓ« V ß¬«αÑÑ óßÑú« »α¿óÑñÑΓ ¬
  220.  «Φ¿í¬Ñ áñαÑßᵿ¿, »«ß¬«½∞¬π GETINT »«½áúáÑΓ, τΓ« «¡á αáí«Γá-
  221.  ÑΓ ¿¼Ñ¡¡« ß π¬áºáΓѽѼ.
  222.      
  223.                            - 102 -
  224.      
  225.      æá¼á  GETINT  ∩ó½∩ÑΓß∩ «τÑó¿ñ¡«⌐ ¼«ñ¿Σ¿¬áµ¿Ñ⌐ ¡á»¿ßá¡¡«⌐
  226.  ¡á¼¿ αá¡ÑÑ Σπ¡¬µ¿¿ ATOI:
  227.  
  228.    GETINT(PN)    /* GET NEXT INTEGER FROM INPUT */
  229.    INT *PN;
  230.    {
  231.      INT C,SIGN;
  232.     
  233.      WHILE ((C = GETCH()) == ' ' \!\! C == '\N'
  234.      \!\! C == '\T'); /* SKIP WHITE SPACE */
  235.      SIGN = 1;
  236.      IF (C == '+' \!\! C == '-') { /* RECORD
  237.          SIGN */
  238.         SIGN = (C == '+') ? 1 : -1;
  239.         C = GETCH();
  240.      }
  241.      FOR (*PN = 0; C >= '0' && C <= '9'; C = GETCH())
  242.         *PN = 10 * *PN + C - '0';
  243.      *PN *= SIGN;
  244.      IF (C != EOF)
  245.         UNGETCH(C);
  246.      RETURN(C);
  247.    }
  248.  
  249.  éδαáªÑ¡¿Ñ *PN ¿ß»«½∞ºπÑΓß∩ óßεñπ ó GETINT ¬á¬ «íδτ¡á∩ »ÑαÑ-
  250.  ¼Ñ¡¡á∩ Γ¿»á INT. îδ ΓᬪѠ¿ß»«½∞º«ó὿ Σπ¡¬µ¿¿ GETCH ¿
  251.  UNGETCH («»¿ßá¡¡δÑ ó ú½áóÑ 4) , ΓᬠτΓ« «ñ¿¡ ½¿Φ¡¿⌐ ß¿¼ó«½,
  252.  ¬«Γ«Γαδ⌐ »α¿σ«ñ¿Γß∩ ßτ¿ΓδóáΓ∞, ¼«ªÑΓ íδΓ∞ »«¼ÑΘÑ¡ «íαáΓ¡« ó«
  253.  óó«ñ.
  254.      ô»α᪡ѡ¿Ñ 5-1.
  255.      ---------------
  256.      ìá»¿Φ¿ΓÑ Σπ¡¬µ¿ε GETFLOAT, á¡á½«ú  GETINT  ñ½∩  τ¿ßѽ  ß
  257.  »½áóáεΘÑ⌐ Γ«τ¬«⌐. èᬫ⌐ Γ¿» ñ«½ª¡á ó«ºóαáΘáΓ∞ GETFLOAT ó ¬á-
  258.  τÑßΓóÑ º¡áτÑ¡¿∩ Σπ¡¬µ¿¿?
  259.  
  260.       5.3. ô¬áºáΓѽ¿ ¿ ¼áßß¿óδ
  261.      
  262.      é ∩ºδ¬Ñ "C" ßπΘÑßΓóπÑΓ ß¿½∞¡á∩ óºá¿¼«ßó∩º∞ ¼Ñªñπ π¬áºá-
  263.  Γѽ∩¼¿ ¿ ¼áßß¿óἿ , ¡áßΓ«½∞¬« ß¿½∞¡á∩, τΓ« π¬áºáΓѽ¿ ¿ ¼áß-
  264.  ß¿óδ ñÑ⌐ßΓó¿Γѽ∞¡« ß½ÑñπÑΓ αáßß¼áΓα¿óáΓ∞ «ñ¡«óαѼѡ¡«. ïεíπε
  265.  «»Ñαᵿε, ¬«Γ«απε ¼«ª¡« óδ»«½¡¿Γ∞ ß »«¼«Θ∞ε ¿¡ñѬ߫ó ¼áßß¿-
  266.  óá, ¼«ª¡« ßñѽáΓ∞ ¿ ß »«¼«Θ∞ε π¬áºáΓѽÑ⌐. óáα¿á¡Γ ß π¬áºáΓÑ-
  267.  ½∩¼¿ «íδτ¡« «¬áºδóáÑΓß∩ í«½ÑÑ íδßΓαδ¼, ¡« ¿ ¡Ñ߬«½∞¬« í«½ÑÑ
  268.  Γαπñ¡δ¼ ñ½∩ ¡Ñ»«ßαÑñßΓóÑ¡¡«ú« »«¡¿¼á¡¿∩, »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ñ½∩
  269.  ¡áτ¿¡áεΘÑú«. «»¿ßá¡¿Ñ
  270.  
  271.  INT A[10]
  272.  
  273.  «»αÑñѽ∩ÑΓ  ¼áßß¿ó  αẼÑαá  10, Γ.Ñ. ìáí«α ¿º 10 »«ß½Ññ«óá-
  274.  Γѽ∞¡δσ «íΩÑ¬Γ«ó, ¡áºδóáѼδσ A[0], A[1], ...,  A[9].  çỿß∞
  275.  A[I] ß««ΓóÑΓßΓóπÑΓ φ½Ñ¼Ñ¡Γπ ¼áßß¿óá τÑαѺ I »«º¿µ¿⌐ «Γ ¡áτá-
  276.  ½á. àß½¿ PA - π¬áºáΓѽ∞ µÑ½«ú«, «»¿ßá¡¡δ⌐ ¬á¬
  277.             
  278.                            - 103 -
  279.      
  280.     INT *PA
  281.  
  282.  Γ« »α¿ßóá¿óá¡¿Ñ
  283.  
  284.     PA = &A[0]
  285.  
  286.  »α¿ó«ñ¿Γ ¬ Γ«¼π, τΓ« PA π¬áºδóáÑΓ ¡á ¡π½Ñó«⌐ φ½Ñ¼Ñ¡Γ ¼áßß¿óá
  287.  A; φΓ« «º¡áτáÑΓ, τΓ« PA ß«ñÑαª¿Γ áñαÑß φ½Ñ¼Ñ¡Γá A[0]. ÆÑ»Ñα∞
  288.  »α¿ßóá¿óá¡¿Ñ
  289.  
  290.     X = *PA
  291.  
  292.  íπñÑΓ ¬«»¿α«óáΓ∞ ß«ñÑন¼«Ñ A[0] ó X.
  293.      àß½¿ PA π¬áºδóáÑΓ ¡á ¡Ñ¬«Γ«αδ⌐ «»αÑñѽѡ¡δ⌐ φ½Ñ¼Ñ¡Γ ¼áß-
  294.  ß¿óá  A,  Γ« »« «»αÑñѽѡ¿ε PA+1 π¬áºδóáÑΓ ¡á ß½ÑñπεΘ¿⌐ φ½Ñ-
  295.  ¼Ñ¡Γ, ¿ ó««íΘÑ PA-I π¬áºδóáÑΓ ¡á φ½Ñ¼Ñ¡Γ, ßΓ«∩Θ¿⌐ ¡á I »«º¿-
  296.  µ¿⌐ ñ« φ½Ñ¼Ñ¡Γá, π¬áºδóáѼ«ú« PA, á PA+I ¡á φ½Ñ¼Ñ¡Γ, ßΓ«∩Θ¿⌐
  297.  ¡á I »«º¿µ¿⌐ »«ß½Ñ. Æá¬¿¼  «íαẫ¼,  Ñß½¿  PA  π¬áºδóáÑΓ  ¡á
  298.  A[0], Γ«
  299.  
  300.     *(PA+1)
  301.  
  302.  ßßδ½áÑΓß∩ ¡á ß«ñÑন¼«Ñ A[1], PA+I - áñαÑß A[I], á *(PA+I) -
  303.  ß«ñÑন¼«Ñ A[I].
  304.      ¥Γ¿ ºá¼Ñτá¡¿∩ ß»αáóÑñ½¿óδ ¡Ñºáó¿ß¿¼« «Γ Γ¿»á »ÑαѼѡ¡δσ
  305.  ó ¼áßß¿óÑ A. æπΓ∞ «»αÑñѽѡ¿∩ "ñ«íáó½Ñ¡¿∩ 1 ¬ π¬áºáΓѽε", á
  306.  ΓᬪѠÑú« αáß»α«ßΓαá¡Ñ¡¿∩ ¡á óßε áα¿Σ¼ÑΓ¿¬π π¬áºáΓѽÑ⌐, ß«ß-
  307.  Γ«¿Γ ó Γ«¼, τΓ« »α¿αáΘÑ¡¿Ñ ¼áßΦΓáí¿απÑΓß∩ αẼÑα«¼ »á¼∩Γ¿,
  308.  ºá¡¿¼áѼ«⌐ «íΩÑ¬Γ«¼, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ π¬áºáΓѽ∞. Æá¬¿¼
  309.  «íαẫ¼, I ó PA+I »ÑαÑñ »α¿íáó½Ñ¡¿Ñ¼ π¼¡«ªáÑΓß∩ ¡á αẼÑα
  310.  «íΩÑ¬Γ«ó, ¡á ¬«Γ«αδÑ π¬áºδóáÑΓ PA.
  311.      ÄτÑó¿ñ¡« ßπΘÑßΓóπÑΓ «τÑ¡∞ ΓÑß¡«Ñ ß««ΓóÑΓßΓó¿Ñ ¼Ñªñπ ¿¡-
  312.  ñѬßᵿÑ⌐ ¿ áα¿Σ¼ÑΓ¿¬«⌐ π¬áºáΓѽÑ⌐. ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ ¬«¼-
  313.  »¿½∩Γ«α »αÑ«íαáºπÑΓ ßß佬π ¡á ¼áßß¿ó ó π¬áºáΓѽ∞ ¡á ¡áτὫ
  314.  ¼áßß¿óá. é αѺπ½∞ΓáΓÑ φΓ«ú« ¿¼∩ ¼áßß¿óá ∩ó½∩ÑΓß∩ π¬áºáΓѽ∞-
  315.  ¡δ¼ óδαáªÑ¡¿Ñ¼. ÄΓßεñá óδΓѬáÑΓ ¡Ñ߬«½∞¬« óÑß∞¼á »«½Ñº¡δσ
  316.  ß½ÑñßΓó¿⌐. Æá¬ ¬á¬ ¿¼∩ ¼áßß¿óá ∩ó½∩ÑΓß∩ ß¿¡«¡¿¼«¼ ¼ÑßΓ«»«½«-
  317.  ªÑ¡¿∩ Ñú« ¡π½Ñó«ú« φ½Ñ¼Ñ¡Γá, Γ« »α¿ßóá¿óá¡¿Ñ PA=&A[0] ¼«ª¡«
  318.  ºá»¿ßáΓ∞ ¬á¬
  319.      
  320.                PA = A
  321.  
  322.      àΘÑ í«½ÑÑ πñ¿ó¿Γѽ∞¡δ¼, »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ¡á »Ñαóδ⌐ óºú-
  323.  ½∩ñ, ¬áªÑΓß∩ Γ«Γ Σá¬Γ, τΓ« ßß佬π ¡á A[I] ¼«ª¡« ºá»¿ßáΓ∞ ó
  324.  ó¿ñÑ *(A+I). Åα¿ á¡á½¿º¿α«óá¡¿¿ óδαáªÑ¡¿∩ A[I] ó ∩ºδ¬Ñ "C"
  325.  «¡« ¡Ñ¼Ññ½Ñ¡¡« »αÑ«íαáºπÑΓß∩ ¬ ó¿ñπ *(A+I); φΓ¿ ñóÑ Σ«α¼δ
  326.  ß«óÑαΦÑ¡¡« φ¬ó¿óá½Ñ¡Γ¡δ. àß½¿ »α¿¼Ñ¡¿Γ∞ «»Ñαᵿε & ¬ «íÑ¿¼
  327.  τáßΓ∩¼ Γᬫú« ß««Γ¡«ΦÑ¡¿∩ φ¬ó¿óá½Ñ¡Γ¡«ßΓ¿, Γ« ¼δ »«½πτ¿¼,
  328.  τΓ« &A[I] ¿ A+I Γ«ªÑ ¿ñÑ¡Γ¿τ¡δ: A+I - áñαÑß I-ú« φ½Ñ¼Ñ¡Γá «Γ
  329.  ¡áτá½á A. æ ñαπú«⌐ ßΓ«α«¡δ, Ñß½¿ PA ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ, Γ«
  330.  ó óδαáªÑ¡¿∩σ Ñú« ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ß ¿¡ñѬ߫¼: PA[I] ¿ñÑ¡-
  331.  Γ¿τ¡« *(PA+I). è«α«τÑ, ½εí«Ñ óδαáªÑ¡¿Ñ, ó¬½ετáεΘÑÑ ¼áßß¿óδ ¿
  332.  ¿¡ñѬßδ, ¼«ªÑΓ íδΓ∞ ºá»¿ßá¡« τÑαѺ π¬áºáΓѽ¿ ¿ ß¼ÑΘÑ¡¿∩ ¿
  333.  ¡á«í«α«Γ, »α¿τѼ ñáªÑ ó «ñ¡«¼ ¿ Γ«¼ ªÑ πΓóÑαªñÑ¡¿¿.
  334.      
  335.                            - 104 -
  336.      
  337.      ê¼ÑÑΓß∩ «ñ¡« αẽ¿τ¿Ñ ¼Ñªñπ ¿¼Ñ¡Ñ¼ ¼áßß¿óá ¿ π¬áºáΓѽѼ,
  338.  ¬«Γ«α«Ñ ¡Ñ«íσ«ñ¿¼« ¿¼ÑΓ∞ ó ó¿ñπ. π¬áºáΓѽ∞ ∩ó½∩ÑΓß∩ »ÑαѼѡ-
  339.  ¡«⌐, ΓᬠτΓ« «»Ñαᵿ¿ PA=A ¿ PA++ ¿¼ÑεΓ ß¼δß½. ì« ¿¼∩ ¼áßß¿-
  340.  óá ∩ó½∩ÑΓß∩ ¬«¡ßΓá¡Γ«⌐, á ¡Ñ »ÑαѼѡ¡«⌐: ¬«¡ßΓαπ¬µ¿¿ Γ¿»á
  341.  A=PA ¿½¿ A++,¿½¿ P=&A íπñπΓ ¡Ñºá¬«¡¡δ¼¿.
  342.      è«úñá ¿¼∩ ¼áßß¿óá »ÑαÑñáÑΓß∩ Σπ¡¬µ¿¿, Γ« ¡á ßἫ¼ ñѽÑ
  343.  Ñ⌐ »ÑαÑñáÑΓß∩ ¼ÑßΓ«»«½«ªÑ¡¿Ñ ¡áτá½á φΓ«ú« ¼áßß¿óá. é¡πΓα¿
  344.  óδºóá¡¡«⌐ Σπ¡¬µ¿¿ Γᬫ⌐ áαúπ¼Ñ¡Γ ∩ó½∩ÑΓß∩ Γ«τ¡« Γᬫ⌐ ªÑ »Ñ-
  345.  αѼѡ¡«⌐, ¬á¬ ¿ ½εíá∩ ñαπúá∩, ΓᬠτΓ« ¿¼∩ ¼áßß¿óá ó ¬áτÑßΓóÑ
  346.  áαúπ¼Ñ¡Γá ñÑ⌐ßΓó¿Γѽ∞¡« ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ, Γ.Ñ. ÅÑαѼѡ-
  347.  ¡«⌐, ß«ñÑαªáΘÑ⌐ áñαÑß. ¼δ ¼«ªÑ¼ ¿ß»«½∞º«óáΓ∞ φΓ« «íßΓ«∩Γѽ∞-
  348.  ßΓó« ñ½∩ ¡á»¿ßá¡¿∩ ¡«ó«ú« óáα¿á¡Γá Σπ¡¬µ¿¿ STRLEN, óδτ¿ß½∩ε-
  349.  ΘÑ⌐ ñ½¿¡π ßΓ᫬¿.
  350.  
  351.   STRLEN(S)       /* RETURN LENGTH OF STRING S */
  352.   CHAR *S;
  353.   {
  354.      INT N;
  355.  
  356.      FOR (N = 0; *S != '\0'; S++)
  357.              N++;
  358.      RETURN(N);
  359.   }
  360.  
  361.      Ä»Ñαᵿ∩ πóѽ¿τÑ¡¿∩ S ß«óÑαΦÑ¡¡« ºá¬«¡¡á, »«ß¬«½∞¬π φΓá
  362.  »ÑαѼѡ¡á∩ ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ; S++ ¡¿¬á¬ ¡Ñ ó½¿∩ÑΓ ¡á ß¿¼-
  363.  ó«½∞¡πε ßΓ᫬π ó «íαáΓ¿óΦÑ⌐ß∩ ¬ STRLEN Σπ¡¬µ¿¿, á Γ«½∞¬«
  364.  πóѽ¿τ¿óáÑΓ ½«¬á½∞¡πε ñ½∩ Σπ¡¬µ¿¿ STRLEN ¬«»¿ε áñαÑßá. Ä»¿-
  365.  ßá¡¿∩ Σ«α¼á½∞¡δσ »áαá¼ÑΓα«ó ó «»αÑñѽѡ¿¿ Σπ¡¬µ¿¿ ó ó¿ñÑ
  366.  
  367.  CHAR S[];
  368.  CHAR *S;
  369.  
  370.  ß«óÑαΦÑ¡¡« φ¬ó¿óá½Ñ¡Γ¡δ; ¬á¬«⌐ ó¿ñ «»¿ßá¡¿∩ ß½ÑñπÑΓ »αÑñ»«-
  371.  τÑßΓ∞, «»αÑñѽ∩ÑΓß∩ ó º¡áτ¿Γѽ∞¡«⌐ ßΓѻѡ¿ ΓѼ, ¬á¬¿Ñ óδαá-
  372.  ªÑ¡¿∩ íπñπΓ ¿ß»«½∞º«óá¡δ »α¿ ¡á»¿ßá¡¿¿ Σπ¡¬µ¿¿. àß½¿ Σπ¡¬µ¿¿
  373.  »ÑαÑñáÑΓß∩ ¿¼∩ ¼áßß¿óá, Γ« ó ºáó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, τΓ« πñ«í-
  374.  ¡ÑÑ, ¼«ª¡« »«½áúáΓ∞, τΓ« Σπ¡¬µ¿∩ «»Ñα¿απÑΓ ½¿í« ß ¼áßß¿ó«¼,
  375.  ½¿í« ß π¬áºáΓѽѼ, ¿ ñÑ⌐ßΓó«óáΓ∞ ñá½ÑÑ ß««ΓóÑΓóπεΘ¿¼ «íαá-
  376.  º«¼. î«ª¡« ñáªÑ ¿ß»«½∞º«óáΓ∞ «íá ó¿ñá «»Ñαᵿ⌐, Ñß½¿ φΓ« ¬á-
  377.  ªÑΓß∩ π¼ÑßΓ¡δ¼ ¿ ∩ß¡δ¼.
  378.      î«ª¡« »ÑαÑñáΓ∞ Σπ¡¬µ¿¿ τáßΓ∞ ¼áßß¿óá, Ñß½¿ ºáñáΓ∞ ó ¬á-
  379.  τÑßΓóÑ áαúπ¼Ñ¡Γá π¬áºáΓѽ∞ ¡áτá½á »«ñ¼áßß¿óá. ìá»α¿¼Ñα, Ñß½¿
  380.  A - ¼áßß¿ó, Γ« ¬á¬
  381.  
  382.  F(&A[2])
  383.  
  384.  ¬á¬ ¿
  385.       
  386.  F(A+2)
  387.      
  388.                            - 105 -
  389.  
  390.  »ÑαÑñáεΓ  Σπ¡¬µ¿¿ F áñαÑß φ½Ñ¼Ñ¡Γá A[2], »«Γ«¼π τΓ« ¿ &A[2],
  391.  ¿ A+2 ∩ó½∩εΓß∩ π¬áºáΓѽ∞¡δ¼¿  óδαáªÑ¡¿∩¼¿,  ßßδ½áεΘ¿¼¿ß∩  ¡á
  392.  ΓαÑΓ¿⌐ φ½Ñ¼Ñ¡Γ A. ó¡πΓα¿ Σπ¡¬µ¿¿ F «»¿ßá¡¿∩ áαúπ¼Ñ¡Γ«ó ¼«úπΓ
  393.  »α¿ßπΓßΓó«óáΓ∞ ó ó¿ñÑ:
  394.  
  395.  F(ARR)
  396.  INT ARR[];
  397.  {
  398.     ...
  399.  }
  400.  
  401.  ¿½¿
  402.  
  403.  F(ARR)
  404.  INT *ARR;
  405.  {
  406.     ...
  407.  }
  408.  
  409.  ùΓ« ¬áßáÑΓß∩ Σπ¡¬µ¿¿ F, Γ« Γ«Γ Σá¬Γ, τΓ« ÑÑ áαúπ¼Ñ¡Γ ó ñÑ⌐ß-
  410.  Γó¿Γѽ∞¡«ßΓ¿ ßßδ½áÑΓß∩ ¬ τáßΓ¿ í«½∞ΦÑú« ¼áßß¿óá,¡Ñ ¿¼ÑÑΓ ñ½∩
  411.  ¡ÑÑ ¡¿¬á¬¿σ »«ß½ÑñßΓó¿⌐.
  412.  
  413.       5.4. ÇñαÑß¡á∩ áα¿Σ¼ÑΓ¿¬á
  414.  
  415.      àß½¿ P ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ, Γ« ¬á¬«ó íδ ¡¿ íδ½ ß«αΓ
  416.  «íΩѬΓá, ¡á ¬«Γ«αδ⌐ «¡ π¬áºδóáÑΓ, «»Ñαᵿ∩ P++ πóѽ¿τ¿óáÑΓ P
  417.  Γá¬, τΓ« «¡ π¬áºδóáÑΓ ¡á ß½ÑñπεΘ¿⌐ φ½Ñ¼Ñ¡Γ ¡áí«αá φΓ¿σ
  418.  «íΩÑ¬Γ«ó, á «»Ñαᵿ∩ P +=I πóѽ¿τ¿óáÑΓ P Γá¬, τΓ«íδ «¡ π¬á-
  419.  ºδóá½ ¡á φ½Ñ¼Ñ¡Γ, «ΓßΓ«∩Θ¿⌐ ¡á I φ½Ñ¼Ñ¡Γ«ó «Γ ΓѬπΘÑú« φ½Ñ-
  420.  ¼Ñ¡Γá.φΓ¿ ¿ á¡á½«ú¿τ¡δÑ ¬«¡ßΓαπ¬µ¿¿ »αÑñßΓáó½∩εΓ ß«í«⌐ ßá¼δÑ
  421.  »α«ßΓδÑ ¿ ßá¼δÑ αáß»α«ßΓαá¡Ñ¡¡δÑ Σ«α¼δ áα¿Σ¼ÑΓ¿¬¿ π¬áºáΓѽÑ⌐
  422.  ¿½¿ áñαÑß¡«⌐ áα¿Σ¼ÑΓ¿¬¿.
  423.      ƒºδ¬ "C" »«ß½Ññ«óáΓѽѡ ¿ »«ßΓ«∩¡Ñ¡ ó ßó«Ñ¼ »«ñσ«ñÑ ¬
  424.  áñαÑß¡«⌐ áα¿Σ¼ÑΓ¿¬Ñ; «íΩÑñ¿¡Ñ¡¿Ñ ó «ñ¡« µÑ½«Ñ π¬áºáΓѽÑ⌐,
  425.  ¼áßß¿ó«ó ¿ áñαÑß¡«⌐ áα¿Σ¼ÑΓ¿¬¿ ∩ó½∩ÑΓß∩ «ñ¡«⌐ ¿º ¡á¿í«½ÑÑ
  426.  ß¿½∞¡δσ ßΓ«α«¡ ∩ºδ¬á. äáóá⌐ΓÑ »α«¿½½εßΓα¿απѼ ¡Ñ¬«Γ«αδÑ ¿º
  427.  ß««ΓóÑΓßΓóπεΘ¿σ ó«º¼«ª¡«ßΓÑ⌐ ∩ºδ¬á ¡á »α¿¼ÑαÑ φ½Ñ¼Ñ¡Γáα¡«⌐
  428.  (¡« »«½Ñº¡«⌐, ¡Ñß¼«Γα∩ ¡á ßó«ε »α«ßΓ«Γπ) »α«úαá¼¼δ αáß»αÑñÑ-
  429.  ½Ñ¡¿∩ »á¼∩Γ¿. ê¼ÑεΓß∩ ñóÑ Σπ¡¬µ¿¿: Σπ¡¬µ¿∩ ALLOC(N) ó«ºóαá-
  430.  ΘáÑΓ ó ¬áτÑßΓóÑ ßó«Ñú« º¡áτÑ¡¿∩ π¬áºáΓѽ∞ P, ¬«Γ«αδ⌐ π¬áºδ-
  431.  óáÑΓ ¡á »Ñαóπε ¿º N »«ß½Ññ«óáΓѽ∞¡δσ ß¿¼ó«½∞¡δσ »«º¿µ¿⌐, ¬«-
  432.  Γ«αδÑ ¼«úπΓ íδΓ∞ ¿ß»«½∞º«óá¡δ óδºδóáεΘÑ⌐ Σπ¡¬µ¿ε ALLOC »α«ú-
  433.  αá¼¼«⌐ ñ½∩ σαá¡Ñ¡¿∩ ß¿¼ó«½«ó; Σπ¡¬µ¿∩ FREE(P) «ßó«í«ªñáÑΓ
  434.  »α¿«íαÑΓÑ¡¡πε Γᬿ¼ «íαẫ¼ »á¼∩Γ∞, ΓᬠτΓ« ÑÑ ó ñá½∞¡Ñ⌐ΦѼ
  435.  ¼«ª¡« ß¡«óá ¿ß»«½∞º«óáΓ∞. »α«úαá¼¼á ∩ó½∩ÑΓß∩ "φ½Ñ¼Ñ¡Γáα¡«⌐",
  436.  »«Γ«¼π τΓ« «íαáΘÑ¡¿∩ ¬ FREE ñ«½ª¡δ »α«¿ºó«ñ¿Γ∞ß∩ ó »«α∩ñ¬Ñ,
  437.  «íαáΓ¡«¼ Γ«¼π, ó ¬«Γ«α«¼ »α«¿ºó«ñ¿½¿ß∞ «íαáΘÑ¡¿∩ ¬ ALLOC.
  438.  Æá¬¿¼ «íαẫ¼, π»αáó½∩Ѽá∩ Σπ¡¬µ¿∩¼¿ ALLOC ¿ FREE »á¼∩Γ∞ ∩ó-
  439.  ½∩ÑΓß∩ ßΓѬ«¼ ¿½¿ ß»¿ß¬«¼, ó ¬«Γ«α«¼ »«ß½Ññ¡¿⌐ óó«ñ¿¼δ⌐ φ½Ñ-
  440.  ¼Ñ¡Γ ¿ºó½Ñ¬áÑΓß∩ »Ñαóδ¼. æΓá¡ñáαΓ¡á∩ í¿í½¿«ΓѬá ∩ºδ¬á "C"
  441.  ß«ñÑαª¿Γ á¡á½«ú¿τ¡δÑ Σπ¡¬µ¿¿, ¡Ñ ¿¼ÑεΘ¿Ñ Γᬿσ «úαá¡¿τÑ¡¿⌐,
  442.      
  443.                            
  444.                            - 106 -
  445.      
  446.  ¿, ¬α«¼Ñ Γ«ú«, ó ú½áóÑ 8 ¼δ »α¿óÑñѼ π½πτΦÑ¡¡δÑ óáα¿á¡Γδ.
  447.  îѪñπ ΓѼ, «ñ¡á¬«, ñ½∩ ¼¡«ú¿σ »α¿½«ªÑ¡¿⌐ ¡πª¡á Γ«½∞¬« Γα¿ó¿-
  448.  á½∞¡á∩ Σπ¡¬µ¿∩ ALLOC ñ½∩ αáß»αÑñѽѡ¿∩ ¡Ñí«½∞Φ¿σ πτáßΓ¬«ó
  449.  »á¼∩Γ¿ ¡Ñ¿ºóÑßΓ¡δσ ºáαá¡ÑÑ αẼÑα«ó ó ¡Ñ»αÑñ߬áºπѼδÑ ¼«¼Ñ¡-
  450.  Γδ óαѼѡ¿.
  451.      Åα«ßΓÑ⌐Φá∩ αÑ὿ºáµ¿∩ ß«ßΓ«¿Γ ó Γ«¼, τΓ«íδ Σπ¡¬µ¿∩ αáº-
  452.  ñáóá½á «ΓαѺ¬¿ í«½∞Φ«ú« ß¿¼ó«½∞¡«ú« ¼áßß¿óá, ¬«Γ«α«¼π ¼δ
  453.  »α¿ßó«¿½¿ ¿¼∩ ALLOCBUF. ¥Γ«Γ ¼áßß¿ó ∩ó½∩ÑΓß∩ ß«íßΓóÑ¡¡«ßΓ∞ε
  454.  Σπ¡¬µ¿⌐ ALLOC ¿ FREE. Æá¬ ¬á¬ «¡¿ αáí«ΓáεΓ ß π¬áºáΓѽ∩¼¿, á
  455.  ¡Ñ ß ¿¡ñѬßἿ ¼áßß¿óá, ¡¿¬á¬«⌐ ñαπú«⌐ Σπ¡¬µ¿¿ ¡Ñ ¡πª¡«
  456.  º¡áΓ∞ ¿¼∩ φΓ«ú« ¼áßß¿óá. Ä¡ ¼«ªÑΓ íδΓ∞ «»¿ßá¡ ¬á¬ ó¡ÑΦ¡¿⌐
  457.  ßΓáΓ¿τÑ߬¿⌐, Γ.Ñ. Ä¡ íπñÑΓ ½«¬á½∞¡δ¼ »« «Γ¡«ΦÑ¡¿ε ¬ ¿ßσ«ñ¡«-
  458.  ¼π Σá⌐½π, ß«ñÑαªáΘѼπ ALLOC ¿ FREE, ¿ ¡Ñó¿ñ¿¼δ¼ ºá Ñú« »αÑ-
  459.  ñѽἿ. Åα¿ »αá¬Γ¿τÑ߬«⌐ αÑ὿ºáµ¿¿ φëà¼áß߿󠼫ªÑΓ ñáªÑ
  460.  ¡Ñ ¿¼ÑΓ∞ ¿¼Ñ¡¿; ó¼ÑßΓ« φΓ«ú« «¡ ¼«ªÑΓ íδΓ∞ »«½πτÑ¡ ó αѺπ½∞-
  461.  ΓáΓÑ ºá»α«ßá ¬ «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼѠ¡á π¬áºáΓѽ∞ ¡Ñ¬«Γ«α«ú«
  462.  ¡Ñ¿¼Ñ¡«óá¡¡«ú« í½«¬á »á¼∩Γ¿.
  463.      äαπú«⌐ ¡Ñ«íσ«ñ¿¼«⌐ ¿¡Σ«α¼áµ¿Ñ⌐ ∩ó½∩ÑΓß∩ Γ«, ¬á¬á∩ τáßΓ∞
  464.  ¼áßß¿óá ALLOCBUF πªÑ ¿ß»«½∞º«óá¡á. îδ »«½∞ºπѼß∩ π¬áºáΓѽѼ
  465.  »Ñαó«ú« ßó«í«ñ¡«ú« φ½Ñ¼Ñ¡Γá, ¡áºóá¡¡δ¼ ALLOCP. è«úñá ¬ Σπ¡¬-
  466.  µ¿¿ ALLOC «íαáΘáεΓß∩ ºá óδñѽѡ¿Ñ¼ N ß¿¼ó«½«ó, Γ« «¡á »α«óÑ-
  467.  α∩ÑΓ, ñ«ßΓáΓ«τ¡« ½¿ «ßΓὫß∞ ñ½∩ φΓ«ú« ¼ÑßΓá ó ALLOCBUF. àß-
  468.  ½¿ ñ«ßΓáΓ«τ¡«, Γ« ALLOC ó«ºóαáΘáÑΓ ΓѬπΘÑÑ º¡áτÑ¡¿Ñ ALLOCP
  469.  (Γ.Ñ. ìáτὫ ßó«í«ñ¡«ú« í½«¬á), ºáΓѼ πóѽ¿τ¿óáÑΓ Ñú« ¡á N,
  470.  ß ΓѼ τΓ«íδ «¡ π¬áºδóá½ ¡á ß½ÑñπεΘπε ßó«í«ñ¡πε «í½áßΓ∞. öπ¡-
  471.  ¬µ¿∩ FREE(P) »α«ßΓ« »«½áúáÑΓ ALLOCP αáó¡δ¼ P »α¿ πß½«ó¿¿,
  472.  τΓ« P π¬áºδóáÑΓ ¡á »«º¿µ¿ε ó¡πΓα¿ ALLOCBUF.
  473.  
  474.  DEFINE NULL 0  /* POINTER VALUE FOR ERROR REPORT */
  475.  DEFINE ALLOCSIZE 1000  /* SIZE OF AVAILABLE SPACE */
  476.  
  477.  TATIC CHAR ALLOCBUF[ALLOCSIZE];/* STORAGE FOR ALLOC */
  478.  TATIC CHAR *ALLOCP = ALLOCBUF; /* NEXT FREE POSITION */
  479.  
  480.  HAR *ALLOC(N)  /* RETURN POINTER TO N CHARACTERS */
  481.  INT N;
  482.  (
  483.   IF (ALLOCP + N <= ALLOCBUF + ALLOCSIZE) {
  484.     ALLOCP += N;
  485.     RETURN(ALLOCP - N); /* OLD P */
  486.  } ELSE         /* NOT ENOUGH ROOM */
  487.     RETURN(NULL);
  488.  )
  489.  
  490.  REE(P)    /* FREE STORAGE POINTED BY P */
  491.  HAR *P;
  492.  (
  493.   IF (P >= ALLOCBUF && P < ALLOCBUF + ALLOCSIZE)
  494.      ALLOCP = P;
  495.  )
  496.  
  497.                            - 107 -
  498.      
  499.      äáñ¿¼ ¡Ñ¬«Γ«αδÑ »«∩ߡѡ¿∩. é««íΘÑ ú«ó«α∩, π¬áºáΓѽ∞ ¼«-
  500.  ªÑΓ íδΓ∞ ¿¡¿µ¿á½¿º¿α«óá¡ Γ«τ¡« ΓᬠªÑ, ¬á¬ ¿ ½εíá∩ ñαπúá∩
  501.  »ÑαѼѡ¡á∩, σ«Γ∩ «íδτ¡« Ññ¿¡ßΓóÑ¡¡δ¼¿ «ß¼δ߽ѡ¡δ¼¿ º¡áτÑ¡¿∩-
  502.  ¼¿ ∩ó½∩εΓß∩ NULL (φΓ« «íßπªñáÑΓß∩ ¡¿ªÑ) ¿½¿ óδαáªÑ¡¿Ñ, ó¬½ε-
  503.  τáεΘÑÑ áñαÑßá αá¡ÑÑ «»αÑñѽѡ¡δσ ñá¡¡δσ ß««ΓóÑΓßΓóπεΘÑú« Γ¿-
  504.  »á. Ä»¿ßá¡¿Ñ
  505.  
  506.   STATIC CHAR *ALLOCP = ALLOCBUF;
  507.  
  508.  «»αÑñѽ∩ÑΓ ALLOCP ¬á¬ π¬áºáΓѽ∞ ¡á ß¿¼ó«½δ ¿ ¿¡¿µ¿á½¿º¿απÑΓ
  509.  Ñú« Γá¬, τΓ«íδ «¡ π¬áºδóá½ ¡á ALLOCBUF, Γ.Ñ. ìá »Ñαóπε ßó«-
  510.  í«ñ¡πε »«º¿µ¿ε »α¿ ¡áτá½Ñ αáí«Γδ »α«úαá¼¼δ. Æá¬ ¬á¬ ¿¼∩ ¼áß-
  511.  ß¿óá ∩ó½∩ÑΓß∩ áñαÑß«¼ Ñú« ¡π½Ñó«ú« φ½Ñ¼Ñ¡Γá, Γ« φΓ« ¼«ª¡«
  512.  í佫 íδ ºá»¿ßáΓ∞ ó ó¿ñÑ
  513.  
  514.      STATIC CHAR *ALLOCP = &ALLOCBUF[0];
  515.  
  516.  ¿ß»«½∞ºπ⌐ΓÑ  Γπ ºá»¿ß∞, ¬«Γ«αá∩ óá¼ ¬áªÑΓß∩ í«½ÑÑ ÑßΓÑßΓóÑ¡-
  517.  ¡«⌐. æ »«¼«Θ∞ε »α«óÑન
  518.  
  519.    IF (ALLOCP + N <= ALLOCBUF + ALLOCSIZE)
  520.  
  521.  óδ∩ß¡∩ÑΓß∩, «ßΓὫß∞ ½¿ ñ«ßΓáΓ«τ¡« ¼ÑßΓá, τΓ«íδ πñ«ó½ÑΓó«-
  522.  α¿Γ∞ ºá»α«ß ¡á N ß¿¼ó«½«ó. àß½¿ ñ«ßΓáΓ«τ¡«, Γ« ¡«ó«Ñ º¡áτÑ-
  523.  ¡¿Ñ ALLOCP ¡Ñ íπñÑΓ π¬áºδóáΓ∞ ñá½∞ΦÑ, τѼ ¡á »«ß½Ññ¡εε »«º¿-
  524.  µ¿ε ALLOCBUF. àß½¿ ºá»α«ß ¼«ªÑΓ íδΓ∞ πñ«ó½ÑΓó«αÑ¡, Γ« ALLOC
  525.  ó«ºóαáΘáÑΓ «íδτ¡δ⌐ π¬áºáΓѽ∞ («íαáΓ¿ΓѠ󡿼᡿Ѡ¡á «»¿ßá¡¿Ñ
  526.  ßἫ⌐ Σπ¡¬µ¿¿). àß½¿ ªÑ ¡ÑΓ, Γ« ALLOC ñ«½ª¡á óÑα¡πΓ∞ ¡Ñ¬«Γ«-
  527.  αδ⌐ »α¿º¡á¬, ú«ó«α∩Θ¿⌐ « Γ«¼, τΓ« í«½∞ΦÑ ¼ÑßΓá ¡Ñ «ßΓὫß∞.
  528.  é ∩ºδ¬Ñ "C" úáαá¡Γ¿απÑΓß∩, τΓ« ¡¿ «ñ¿¡ »αáó¿½∞¡δ⌐ π¬áºáΓѽ∞
  529.  ñá¡¡δσ ¡Ñ ¼«ªÑΓ ¿¼ÑΓ∞ º¡áτÑ¡¿Ñ ¡π½∞, ΓᬠτΓ« ó«ºóαáΘÑ¡¿Ñ ¡π-
  530.  ½∩ ¼«ªÑΓ ß½πª¿Γ∞ ó ¬áτÑßΓóÑ ß¿ú¡á½á « ¡Ñ¡«α¼á½∞¡«¼ ß«íδΓ¿¿,
  531.  ó ñá¡¡«¼ ß½πτáÑ «í «ΓßπΓßΓó¿¿ ¼ÑßΓá. îδ, «ñ¡á¬«, ó¼ÑßΓ« ¡π½∩
  532.  »¿ΦѼ NULL, ß ΓѼ τΓ«íδ í«½ÑÑ ∩ß¡« »«¬áºáΓ∞, τΓ« φΓ« ß»Ñµ¿-
  533.  á½∞¡«Ñ º¡áτÑ¡¿Ñ π¬áºáΓѽ∩. é««íΘÑ ú«ó«α∩, µÑ½δÑ ¡Ñ ¼«úπΓ «ß-
  534.  ¼δ߽ѡ¡« »α¿ßóá¿óáΓ∞ß∩ π¬áºáΓѽ∩¼, á ¡π½∞ - φΓ« «ß«íδ⌐ ß½π-
  535.  τá⌐.
  536.      Åα«óÑન ó¿ñá
  537.  
  538.   IF (ALLOCP + N <= ALLOCBUF + ALOOCSIZE)
  539.  ¿
  540.   IF (P >= ALLOCBUF && P < ALLOCBUF + ALLOCSIZE)
  541.  
  542.  ñѼ«¡ßΓα¿απεΓ ¡Ñ߬«½∞¬« ó᪡δσ áß»Ñ¬Γ«ó áα¿Σ¼ÑΓ¿¬¿ π¬áºáΓÑ-
  543.  ½Ñ⌐. é«-»Ñαóδσ , »α¿ «»αÑñѽѡ¡δσ πß½«ó¿∩σ π¬áºáΓѽ¿ ¼«ª¡«
  544.  ßαáó¡¿óáΓ∞. àß½¿ P ¿ Q π¬áºδóáεΓ ¡á φ½Ñ¼Ñ¡Γδ «ñ¡«ú« ¿ Γ«ú«
  545.  ªÑ ¼áßß¿óá, Γ« ΓᬿѠ«Γ¡«ΦÑ¡¿∩, ¬á¬ <, >= ¿ Γ.ñ., αáí«ΓáεΓ
  546.  ¡áñ½ÑªáΘ¿¼ «íαẫ¼. ìá»α¿¼Ñα,
  547.  
  548.   P < Q     
  549.                            - 108 -
  550.  
  551.  ¿ßΓ¿¡¡«, Ñß½¿ P π¬áºδóáÑΓ ¡á í«½ÑÑ αá¡¡¿⌐ φ½Ñ¼Ñ¡Γ ¼áßß¿óá,
  552.  τѼ Q. ÄΓ¡«ΦÑ¡¿∩ == ¿ != Γ«ªÑ αáí«ΓáεΓ. ïεí«⌐ π¬áºáΓѽ∞ ¼«ª-
  553.  ¡« «ß¼δ߽ѡ¡δ¼ «íαẫ¼ ßαáó¡¿Γ∞ ¡á αáóÑ¡ßΓó« ¿½¿ ¡ÑαáóÑ¡ßΓó«
  554.  ß NULL. ì« ¡¿ ºá τΓ« ¡Ñ½∞º∩ απτáΓ∞ß∩, Ñß½¿ óδ ¿ß»«½∞ºπÑΓÑ
  555.  ßαáó¡Ñ¡¿∩ »α¿ αáí«ΓÑ ß π¬áºáΓѽ∩¼¿, π¬áºδóáεΘ¿¼¿ ¡á αạδÑ
  556.  ¼áßß¿óδ. àß½¿ óá¼ »«óѺÑΓ, Γ« ¡á óßÑσ ¼áΦ¿¡áσ óδ »«½πτ¿ΓÑ
  557.  «τÑó¿ñ¡πε íÑßß¼δß½¿µπ. àß½¿ ªÑ ¡ÑΓ, Γ« óáΦá »α«úαá¼¼á íπñÑΓ
  558.  »αáó¿½∞¡« αáí«ΓáΓ∞ ¡á «ñ¡«⌐ ¼áΦ¿¡Ñ ¿ ñáóáΓ∞ ¡Ñ»«ßΓ¿ª¿¼δÑ αÑ-
  559.  ºπ½∞ΓáΓδ ¡á ñαπú«⌐.
  560.       é«-óΓ«αδσ, ¬á¬ ¼δ πªÑ ó¿ñѽ¿, π¬áºáΓѽ∞ ¿  µÑ½«Ñ  ¼«ª¡«
  561.  ß¬½áñδóáΓ∞ ¿ óδτ¿ΓáΓ∞. è«¡ßΓαπ¬µ¿∩
  562.  
  563.   P + N
  564.  
  565.  »«ñαáºπ¼ÑóáÑΓ N-δ⌐ «íΩÑ¬Γ ºá ΓѼ, ¡á ¬«Γ«αδ⌐ P π¬áºδóáÑΓ ó
  566.  ¡áßΓ«∩Θ¿⌐ ¼«¼Ñ¡Γ. ¥Γ« ß»αáóÑñ½¿ó« ¡Ñºáó¿ß¿¼« «Γ Γ«ú«, ¡á ¬á-
  567.  ¬«⌐ ó¿ñ «íΩÑ¬Γ«ó P ñ«½ªÑ¡ π¬áºδóáΓ∞; ¬«¼»¿½∩Γ«α ßá¼ ¼áßΦΓá-
  568.  í¿απÑΓ N ó ß««ΓóÑΓßΓó¿¿ ß «»αÑñѽ∩Ñ¼δ¼ ¿º «»¿ßá¡¿∩ P αẼÑ-
  569.  α«¼ «íΩÑ¬Γ«ó, π¬áºδóáѼδσ ß »«¼«Θ∞ε P. ¡á»α¿¼Ñα, ¡á PDP-11
  570.  ¼áßΦΓáí¿απεΘ¿⌐ ¼¡«ª¿Γѽ∞ αáóÑ¡ 1 ñ½∩ CHAR, 2 ñ½∩ INT ¿
  571.  SHORT, 4 ñ½∩ LONG ¿ FLOAT ¿ 8 ñ½∩ DOUBLE.
  572.      éδτ¿Γá¡¿Ñ π¬áºáΓѽÑ⌐ Γ«ªÑ ó«º¼«ª¡«: Ñß½¿ P ¿ Q π¬áºδóáεΓ
  573.  ¡á φ½Ñ¼Ñ¡Γδ «ñ¡«ú« ¿ Γ«ú« ªÑ ¼áßß¿óá, Γ«  P-Q  -  ¬«½¿τÑßΓó«
  574.  φ½Ñ¼Ñ¡Γ«ó  ¼Ñªñπ P ¿ Q. ¥Γ«Γ Σá¬Γ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ ¡á-
  575.  »¿ßá¡¿∩ ÑΘÑ «ñ¡«ú« óáα¿á¡Γá Σπ¡¬µ¿¿
  576.  
  577.   STRLEN:
  578.    STRLEN(S)       /* RETURN LENGTH OF STRING S */
  579.    CHAR *S;
  580.    {
  581.       CHAR *P = S;
  582.    
  583.       WHILE (*P != '\0')
  584.               P++;
  585.       RETURN(P-S);
  586.    }
  587.      Åα¿ «»¿ßá¡¿¿ π¬áºáΓѽ∞ P ó φΓ«⌐ Σπ¡¬µ¿¿ ¿¡¿µ¿á½¿º¿α«óá¡
  588.  »«ßαÑñßΓó«¼ ßΓ᫬¿ S, ó αѺπ½∞ΓáΓÑ τÑú« «¡ π¬áºδóáÑΓ ¡á »Ñα-
  589.  óδ⌐ ß¿¼ó«½ ßΓ᫬¿. é µ¿¬½Ñ WHILE »« «τÑαÑñ¿ »α«óÑα∩ÑΓß∩ ¬áª-
  590.  ñδ⌐ ß¿¼ó«½ ñ« ΓÑσ »«α, »«¬á ¡Ñ »«∩ó¿Γß∩ ß¿¼ó«½ ¬«¡µá ßΓ᫬¿
  591.  \0. Æá¬ ¬á¬ º¡áτÑ¡¿Ñ \0 αáó¡« ¡π½ε, á WHILE Γ«½∞¬« óδ∩ß¡∩ÑΓ,
  592.  ¿¼ÑÑΓ ½¿ óδαáªÑ¡¿Ñ ó ¡Ñ¼ º¡áτÑ¡¿Ñ 0, Γ« ó ñá¡¡«¼ ß½πτáÑ ∩ó-
  593.  ¡πε »α«óÑα¬π ¼«ª¡« «»πßΓ¿Γ∞. Æá¬¿Ñ µ¿¬½δ τáßΓ« ºá»¿ßδóáεΓ ó
  594.  ó¿ñÑ
  595.  
  596.  WHILE (*P)
  597.     P++;
  598.  
  599.      Æá¬ ¬á¬ P π¬áºδóáÑΓ ¡á ß¿¼ó«½δ, Γ« «»ÑαáΓ«α P++ »ÑαÑñó¿-
  600.  úáÑΓ P ¬áªñδ⌐ αẠΓá¬, τΓ«íδ «¡ π¬áºδóá½ ¡á  ß½ÑñπεΘ¿⌐  ß¿¼-
  601.  ó«½.  é  αѺπ½∞ΓáΓÑ  P-S  ñáÑΓ τ¿ß½« »α«ß¼«ΓαÑ¡¡δσ ß¿¼ó«½«ó,
  602.      
  603.                            - 108 -
  604.      
  605.  Γ.Ñ. ä½¿¡π ßΓ᫬¿.  Çα¿Σ¼ÑΓ¿¬á  π¬áºáΓѽÑ⌐  »«ß½Ññ«óáΓѽ∞¡á:
  606.  Ñß½¿  íδ ¼δ ¿¼Ñ½¿ ñѽ« ß »ÑαѼѡ¡δ¼¿ Γ¿»á FLOAT, ¬«Γ«αδÑ ºá-
  607.  ¡¿¼áεΓ í«½∞ΦÑ »á¼∩Γ¿, τѼ »ÑαѼѡ¡δÑ Γ¿»á CHAR, ¿ Ñß½¿ íδ  P
  608.  íδ½  π¬áºáΓѽѼ ¡á FLOAT, Γ« «»ÑαáΓ«α P++ »ÑαÑñó¿¡π½ íδ P ¡á
  609.  ß½ÑñπεΘÑÑ FLOAT. Γᬿ¼ «íαẫ¼, ¼δ ¼«ú½¿ íδ ¡á»¿ßáΓ∞  ñαπú«⌐
  610.  óáα¿á¡Γ  Σπ¡¬µ¿¿  ALLOC,  αáß»αÑñѽ∩εΘÑ⌐  »á¼∩Γ∞  ñ½∩ FLOAT,
  611.  ó¼ÑßΓ« CHAR, »α«ßΓ« ºá¼Ñ¡¿ó óßεñπ ó ALLOC ¿  FREE  «»¿ßáΓѽ∞
  612.  CHAR ¡á FLOAT. éßÑ ñÑ⌐ßΓó¿∩ ß π¬áºáΓѽ∩¼¿ áóΓ«¼áΓ¿τÑ߬¿ πτ¿-
  613.  ΓδóáεΓ αẼÑα «íΩÑ¬Γ«ó, ¡á ¬«Γ«αδÑ «¡¿  π¬áºδóáεΓ,  Γᬠ τΓ«
  614.  í«½∞ΦÑ ¡¿τÑú« ¼Ñ¡∩Γ∞ ¡Ñ ¡áñ«.
  615.      çᠿ߬½ετÑ¡¿Ñ¼ π»«¼∩¡πΓδσ óδΦÑ «»Ñαᵿ⌐ (ß½«ªÑ¡¿Ñ ¿ óδ-
  616.  τ¿Γá¡¿Ñ π¬áºáΓѽ∩ ¿ µÑ½«ú«, óδτ¿Γá¡¿Ñ ¿ ßαáó¡Ñ¡¿Ñ ñóπσ π¬á-
  617.  ºáΓѽÑ⌐), óß∩ «ßΓá½∞¡á∩ áα¿Σ¼ÑΓ¿¬á π¬áºáΓѽÑ⌐ ∩ó½∩ÑΓß∩ ¡Ñºá-
  618.  ¬«¡¡«⌐. çá»αÑΘÑ¡« ß¬½áñδóáΓ∞ ñóá π¬áºáΓѽ∩, π¼¡«ªáΓ∞, ñÑ-
  619.  ½¿Γ∞, ßñó¿úáΓ∞ ¿½¿ ¼á߬¿α«óáΓ∞ ¿σ, á ΓᬪѠ»α¿íáó½∩Γ∞ ¬ ¡¿¼
  620.  »ÑαѼѡ¡δÑ Γ¿»á FLOAT ¿½¿ DOUBLE.
  621.  
  622.       5.5. ô¬áºáΓѽ¿ ß¿¼ó«½«ó ¿ Σπ¡¬µ¿¿
  623.  
  624.      æΓα«τ¡á∩ ¬«¡ßΓá¡Γá, ¬á¬, ¡á»α¿¼Ñα,
  625.  
  626.   "I AM A STRING"
  627.  
  628.  ∩ó½∩ÑΓß∩ ¼áß߿󫼠߿¼ó«½«ó. è«¼»¿½∩Γ«α ºáóÑαΦáÑΓ ó¡πΓαÑ¡¡ÑÑ
  629.  »αÑñßΓáó½Ñ¡¿Ñ Γᬫú« ¼áßß¿óá ß¿¼ó«½«¼ \0, ΓᬠτΓ« »α«úαá¼¼δ
  630.  ¼«úπΓ ¡áσ«ñ¿Γ∞ Ñú« ¬«¡Ñµ. Æá¬¿¼ «íαẫ¼, ñ½¿¡á ¼áßß¿óá ó »á-
  631.  ¼∩Γ¿ «¬áºδóáÑΓß∩ ¡á Ññ¿¡¿µπ í«½∞ΦÑ τ¿ß½á ß¿¼ó«½«ó ¼Ñªñπ
  632.  ñó«⌐¡δ¼¿ ¬áóδτ¬á¼¿.
  633.      Å«-ó¿ñ¿¼«¼π τáΘÑ óßÑú« ßΓα«τ¡δÑ ¬«¡ßΓá¡Γδ  »«∩ó½∩εΓß∩  ó
  634.  ¬áτÑßΓóÑ áαúπ¼Ñ¡Γ«ó Σπ¡¬µ¿⌐, ¬á¬, ¡á»α¿¼Ñα, ó
  635.  
  636.   PRINTF ("HELLO, WORLD\N");
  637.  
  638.  ¬«úñá ß¿¼ó«½∞¡á∩ ßΓ᫬á, »«ñ«í¡á∩ φΓ«⌐, »«∩ó½∩ÑΓß∩ ó »α«ú-
  639.  αá¼¼Ñ, Γ« ñ«ßΓπ» ¬ ¡Ñ⌐ «ßπΘÑßΓó½∩ÑΓß∩ ß »«¼«Θ∞ε π¬áºáΓѽ∩
  640.  ß¿¼ó«½«ó; Σπ¡¬µ¿∩ PRINTF Σá¬Γ¿τÑ߬¿ »«½πτáÑΓ π¬áºáΓѽ∞ ß¿¼-
  641.  ó«½∞¡«ú« ¼áßß¿óá.
  642.      è«¡Ñτ¡«, ß¿¼ó«½∞¡δÑ ¼áßß¿óδ ¡Ñ «í∩ºá¡δ íδΓ∞ Γ«½∞¬« áαúπ-
  643.  ¼Ñ¡ΓἿ Σπ¡¬µ¿⌐. àß½¿ «»¿ßáΓ∞ MESSAGE ¬á¬
  644.  
  645.   CHAR *MESSAGE;
  646.  
  647.  Γ« ó αѺπ½∞ΓáΓÑ «»ÑαáΓ«αá
  648.  
  649.   MESSAGE = "NOW IS THE TIME";
  650.  
  651.  »ÑαѼѡ¡á∩ MESSAGE ßΓá¡ÑΓ π¬áºáΓѽѼ ¡á Σá¬Γ¿τÑ߬¿⌐ ¼áßß¿ó
  652.  ß¿¼ó«½«ó. ¥Γ« ¡Ñ ¬«»¿α«óá¡¿Ñ ßΓ᫬¿; ºñÑß∞ πτáßΓóπεΓ Γ«½∞¬«
  653.  π¬áºáΓѽ¿. ó ∩ºδ¬Ñ "C" ¡Ñ »αÑñπß¼«ΓαÑ¡δ ¬á¬¿Ñ-½¿í« «»Ñαᵿ¿
  654.  ñ½∩ «íαáí«Γ¬¿ óßÑ⌐ ßΓ᫬¿ ß¿¼ó«½«ó ¬á¬ µÑ½«ú«.
  655.      îδ »α«¿½½εßΓα¿απѼ ñαπú¿Ñ á߻ѬΓδ π¬áºáΓѽÑ⌐ ¿ ¼áßß¿ó«ó,
  656.  αáºí¿αá∩ ñóÑ »«½Ñº¡δÑ Σπ¡¬µ¿¿ ¿º ßΓá¡ñáαΓ¡«⌐ í¿í½¿«ΓѬ¿ óó«-
  657.  ñá-óδó«ñá, ¬«Γ«αá∩ íπñÑΓ αáßß¼«ΓαÑ¡á ó ú½áóÑ 7.
  658.      
  659.                            - 109 -
  660.      
  661.      ÅÑαóá∩ Σπ¡¬µ¿∩ - φΓ« STRCPY(S,T), ¬«Γ«αá∩ ¬«»¿απÑΓ ßΓα«-
  662.  ¬π Γ ó ßΓ᫬π S. Çαúπ¼Ñ¡Γδ ¡á»¿ßá¡δ ¿¼Ñ¡¡« ó φΓ«¼ »«α∩ñ¬Ñ »«
  663.  á¡á½«ú¿¿ ß «»ÑαᵿÑ⌐ »α¿ßóá¿óá¡¿∩, ¬«úñá ñ½∩ Γ«ú«, τΓ«íδ
  664.  »α¿ßó«¿Γ∞ T ¬ S «íδτ¡« »¿ΦπΓ
  665.  
  666.    S = T
  667.  
  668.   ß¡áτá½á »α¿óÑñѼ óÑαß¿ε ß ¼áßß¿óἿ:
  669.  
  670.    STRCPY(S, T)    /* COPY T TO S */
  671.    CHAR S[], T[];
  672.    {
  673.       INT I;
  674.       I = 0;
  675.       WHILE ((S[I] = T[I]) != '\0')
  676.               I++;
  677.    }
  678.    
  679.      ä½∩  ß«»«ßΓáó½Ñ¡¿∩ ¡¿ªÑ ñáÑΓß∩ óáα¿á¡Γ STRCPY ß π¬áºáΓÑ-
  680.  ½∩¼¿.
  681.  
  682.  STRCPY(S, T)  /* COPY T TO S; POINTER VERSION 1 */
  683.  CHAR *S, *T;
  684.  {
  685.     WHILE ((*S = *T) != '\0') {
  686.             S++;
  687.             T++;
  688.     }
  689.  }
  690.  
  691.      Æá¬ ¬á¬ áαúπ¼Ñ¡Γδ »ÑαÑñáεΓß∩ »« º¡áτÑ¡¿ε, Σπ¡¬µ¿∩ STRCPY
  692.  ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ S ¿ T Γá¬, ¬á¬ «¡á »«ªÑ½áÑΓ. çñÑß∞ «¡¿ ß
  693.  πñ«íßΓó«¼ »«½áúáεΓß∩ π¬áºáΓѽ∩¼¿, ¬«Γ«αδÑ »ÑαÑñó¿úáεΓß∩
  694.  óñ«½∞ ¼áßß¿ó«ó, »« «ñ¡«¼π ß¿¼ó«½π ºá Φáú, »«¬á ¡Ñ íπñÑΓ ß¬«-
  695.  »¿α«óá¡ ó S ºáóÑαΦáεΘ¿⌐ ó T ß¿¼ó«½ \0.
  696.      ìá »αá¬Γ¿¬Ñ Σπ¡¬µ¿∩ STRCPY íδ½á íδ ºá»¿ßá¡á ¡Ñ Γá¬,  ¬á¬
  697.  ¼δ »«¬áºá½¿ óδΦÑ. é«Γ óΓ«αá∩ ó«º¼«ª¡«ßΓ∞:
  698.  
  699.  STRCPY(S, T)  /* COPY T TO S; POINTER VERSION 2 */
  700.  CHAR *S, *T;
  701.  {
  702.     WHILE ((*S++ = *T++) != '\0')
  703.             ;
  704.  }
  705.  
  706.      çñÑß∞ πóѽ¿τÑ¡¿Ñ S ¿ T ó¡ÑßÑ¡« ó »α«óÑα«τ¡πε τáßΓ∞. ç¡á-
  707.  τÑ¡¿Ñ¼ *T++ ∩ó½∩ÑΓß∩ ß¿¼ó«½, ¡á ¬«Γ«αδ⌐ π¬áºδóá½ T ñ« πóѽ¿-
  708.  τÑ¡¿∩; »«ßΓΣ¿¬ß¡á∩ «»Ñαᵿ∩ ++ ¡Ñ ¿º¼Ñ¡∩ÑΓ T, »«¬á φΓ«Γ ß¿¼-
  709.  ó«½ ¡Ñ íπñÑΓ ¿ºó½ÑτÑ¡. Æ«τ¡« ΓᬠªÑ φΓ«Γ ß¿¼ó«½ »«¼ÑΘáÑΓß∩ ó
  710.  ßΓáαπε »«º¿µ¿ε S, ñ« Γ«ú« ¬á¬ S íπñÑΓ πóѽ¿τÑ¡«. è«¡Ñτ¡δ⌐
  711.  αѺπ½∞ΓáΓ ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ« óßÑ ß¿¼ó«½δ, ó¬½ετá∩ ºáóÑα-
  712.  ΦáεΘ¿⌐ \0, ¬«»¿απεΓß∩ ¿º T ó S.
  713.      
  714.                            - 110 -
  715.      
  716.      ê ¬á¬ »«ß½Ññ¡ÑÑ ß«¬αáΘÑ¡¿Ñ ¼δ «»∩Γ∞ «Γ¼ÑΓ¿¼, τΓ« ßαáó¡Ñ-
  717.  ¡¿Ñ ß \0 ∩ó½∩ÑΓß∩ ¿º½¿Φ¡¿¼, ΓᬠτΓ« Σπ¡¬µ¿ε ¼«ª¡« ºá»¿ßáΓ∞ ó
  718.  ó¿ñÑ
  719.  
  720.  STRCPY(S, T)  /* COPY T TO S; POINTER VERSION 3 */
  721.  CHAR *S, *T;
  722.  {
  723.     WHILE (*S++ = *T++)
  724.             ;
  725.  }
  726.  
  727.  σ«Γ∩  ß »Ñαó«ú« óºú½∩ñá φΓᠺỿß∞ ¼«ªÑΓ »«¬áºáΓ∞ß∩ ºáúáñ«τ-
  728.  ¡«⌐, «¡á ñáÑΓ º¡áτ¿Γѽ∞¡«Ñ πñ«íßΓó«.  ¥Γ«⌐  ¿ñ¿«¼«⌐  ß½ÑñπÑΓ
  729.  «ó½áñÑΓ∞  πªÑ σ«Γ∩ íδ »«Γ«¼π, τΓ« óδ ß ¡Ñ⌐ íπñÑΓÑ τáßΓ« óßΓ-
  730.  αÑτáΓ∞ß∩ ó "C"-»α«úαá¼¼áσ.
  731.      éΓ«αá∩ Σπ¡¬µ¿∩ - STRCMP(S, T), ¬«Γ«αá∩ ßαáó¡¿óáÑΓ ß¿¼-
  732.  ó«½∞¡δÑ ßΓ᫬¿ S ¿ Γ, ó«ºóαáΘá∩ «Γα¿µáΓѽ∞¡«Ñ, ¡π½Ñó«Ñ ¿½¿
  733.  »«½«ª¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ ó ß««ΓóÑΓßΓó¿¿ ß ΓѼ, ¼Ñ¡∞ΦÑ, αáó¡«
  734.  ¿½¿ í«½∞ΦÑ ½Ñ¬ß¿¬«úαáΣ¿τÑ߬¿ S, τѼ T. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ
  735.  »«½πτáÑΓß∩ ó αѺπ½∞ΓáΓÑ óδτ¿Γá¡¿∩ ß¿¼ó«½«ó ¿º »Ñαó«⌐ »«º¿-
  736.  µ¿¿, ó ¬«Γ«α«⌐ S ¿ T ¡Ñ ß«ó»áñáεΓ.
  737.  
  738.  STRCMP(S, T) /* RETURN <0 IF S<T, 0 IF S==T, >0 IF S>T */
  739.  CHAR S[], T[];
  740.  {
  741.   INT I;
  742.  
  743.   I = 0;
  744.   WHILE (S[I] == T[I])
  745.      IF (S[I++] == '\0')
  746.              RETURN(0);
  747.   RETURN(S[I]-T[I]);
  748.  }
  749.  
  750.  é«Γ óÑαß¿∩ STRCMP ß π¬áºáΓѽ∩¼¿:
  751.  
  752.  STRCMP(S, T) /* RETURN <0 IF S<T, 0 IF S==T, >0 IF S>T */
  753.  CHAR *S, *T;
  754.  {
  755.   FOR ( ; *S == *T; S++, T++)
  756.      IF (*S == '\0')
  757.              RETURN(0);
  758.   RETURN(*S-*T);
  759.  }
  760.       Γᬠ¬á¬ ++ ¿ -- ¼«úπΓ íδΓ∞ ¬á¬ »«ßΓΣ¿¬ß¡δ¼¿,  Γᬠ ¿
  761.  »αÑΣ¿¬ß¡δ¼¿ «»Ñαᵿ∩¼¿, óßΓαÑτáεΓß∩ ñαπú¿Ñ ¬«¼í¿¡áµ¿¿ * ¿
  762.  ++ ¿ --, σ«Γ∩ ¿ ¼Ñ¡ÑÑ τáßΓ«.
  763.  
  764.       ìá»α¿¼Ñα
  765.  
  766.   *++P
  767.      
  768.                            - 111 -
  769.  
  770.  πóѽ¿τ¿óáÑΓ P ñ« ¿ºó½ÑτÑ¡¿∩ ß¿¼ó«½á, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ
  771.       
  772.  P, á
  773.  
  774.   *--P
  775.  
  776.  ß¡áτá½á π¼Ñ¡∞ΦáÑΓ P.
  777.       ô»α᪡ѡ¿Ñ 5-2.
  778.       ---------------
  779.      ìá»¿Φ¿ΓÑ  óáα¿á¡Γ  ß π¬áºáΓѽ∩¼¿ Σπ¡¬µ¿¿ STRCAT ¿º ú½áóδ
  780.  2: STRCAT(S, T) ¬«»¿απÑΓ ßΓ᫬π T ó ¬«¡Ñµ S.
  781.      ô»α᪡ѡ¿Ñ 5-3.
  782.      ---------------
  783.      ìá»¿Φ¿ΓÑ ¼á¬α«ß ñ½∩ STRCPY.
  784.      ô»α᪡ѡ¿Ñ 5-4.
  785.      --------------
  786.      ÅÑαÑ»¿Φ¿ΓÑ »«ñσ«ñ∩Θ¿Ñ »α«úαá¼¼δ ¿º »αÑñδñπΘ¿σ ú½áó ¿ π»-
  787.  α᪡ѡ¿⌐,  ¿ß»«½∞ºπ∩  π¬áºáΓѽ¿  ó¼ÑßΓ« ¿¡ñѬßᵿ¿ ¼áßß¿ó«ó.
  788.  ò«α«Φ¿Ñ ó«º¼«ª¡«ßΓ¿ ñ½∩ φΓ«ú« »αÑñ«ßΓáó½∩εΓ Σπ¡¬µ¿¿  GETLINE
  789.  /ú½áóδ  1  ¿  4/, ATOI, ITOA ¿ ¿σ óáα¿á¡Γδ /ú½áóδ 2, 3 ¿ 4/,
  790.  REVERSE /ú½áóá 3/, INDEX ¿ GETOP /ú½áóá 4/.
  791.  
  792.       5.6. ô¬áºáΓѽ¿ - ¡Ñ µÑ½δÑ.
  793.  
  794.      éδ, ó«º¼«ª¡«, «íαáΓ¿½¿ ó¡¿¼á¡¿Ñ ó »αÑñδñπΘ¿σ "ß"-»α«ú-
  795.  αá¼¼áσ ¡á ñ«ó«½∞¡« ¡Ñ»α¿¡πªñÑ¡¡«Ñ «Γ¡«ΦÑ¡¿Ñ ¬ ¬«»¿α«óá¡¿ε
  796.  π¬áºáΓѽÑ⌐. é «íΘѼ φΓ« óÑα¡«, τΓ« ¡á í«½∞Φ¿¡ßΓóÑ ¼áΦ¿¡ π¬á-
  797.  ºáΓѽ∞ ¼«ª¡« »α¿ßó«¿Γ∞ µÑ½«¼π ¿ »ÑαÑñáΓ∞ Ñú« «íαáΓ¡«, ¡Ñ ¿º-
  798.  ¼Ñ¡¿ó Ñú«; »α¿ φΓ«¼ ¡Ñ »α«¿ßσ«ñ¿Γ ¡¿¬á¬«ú« ¼áßΦΓáí¿α«óá¡¿∩
  799.  ¿½¿ »αÑ«íαẫóá¡¿∩ ¿ ¡¿ «ñ¿¡ í¿Γ ¡Ñ ΓÑα∩ÑΓß∩. ¬ ß«ªá½Ñ¡¿ε,
  800.  φΓ« óÑñÑΓ ¬ ó«½∞¡«¼π «íαáΘÑ¡¿ε ß Σπ¡¬µ¿∩¼¿, ó«ºóαáΘáεΘ¿¼¿
  801.  π¬áºáΓѽ¿, ¬«Γ«αδÑ ºáΓѼ »α«ßΓ« »ÑαÑñáεΓß∩ ñαπú¿¼ Σπ¡¬µ¿∩¼,
  802.  - ¡Ñ«íσ«ñ¿¼δÑ «»¿ßá¡¿∩ π¬áºáΓѽÑ⌐ τáßΓ« «»π߬áεΓß∩. Éáßß¼«Γ-
  803.  α¿¼, ¡á»α¿¼Ñα, Σπ¡¬µ¿ε STRSAVE(S), ¬«Γ«αá∩ ¬«»¿απÑΓ ßΓ᫬π S
  804.  ó ¡Ñ¬«Γ«α«Ñ ¼ÑßΓ« ñ½∩ σαá¡Ñ¡¿∩, óδñѽ∩Ѽ«Ñ »«ßαÑñßΓó«¼ «íαá-
  805.  ΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿ ALLOC, ¿ ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á φΓ« ¼ÑßΓ«.
  806.  Åαáó¿½∞¡« «¡á ñ«½ª¡á íδΓ∞ ºá»¿ßá¡á Γá¬:
  807.  
  808.      CHAR *STRSAVE(S) /* SAVE STRING S SOMEWHERE */
  809.      CHAR *S;
  810.      {
  811.     CHAR *P, *ALLOC();
  812.  
  813.     IF ((P = ALLOC(STRLEN(S)+1)) != NULL)
  814.             STRCPY(P, S);
  815.     RETURN(P);
  816.      }
  817.  
  818.  ¡á »αá¬Γ¿¬Ñ ßπΘÑßΓóπÑΓ ß¿½∞¡«Ñ ßΓαѼ½Ñ¡¿Ñ «»π߬áΓ∞ «»¿ßá¡¿∩:
  819.    
  820.                            - 112 -
  821.      
  822.      *STRSAVE(S) /* SAVE STRING S SOMEWHERE */
  823.      {
  824.     CHAR *P;
  825.  
  826.     IF ((P = ALLOC(STRLEN(S)+1)) != NULL)
  827.             STRCPY(P, S);
  828.     RETURN(P);
  829.      }
  830.  
  831.      ¥Γá »α«úαá¼¼á íπñÑΓ »αáó¿½∞¡« αáí«ΓáΓ∞ ¡á ¼¡«ú¿σ ¼áΦ¿-
  832.  ¡áσ, »«Γ«¼π τΓ« »« π¼«½τá¡¿ε Σπ¡¬µ¿¿ ¿ áαúπ¼Ñ¡Γδ ¿¼ÑεΓ Γ¿»
  833.  INT, á π¬áºáΓѽ∞ ¿ µÑ½«Ñ «íδτ¡« ¼«ª¡« íѺ«»áß¡« »ÑαÑßδ½áΓ∞
  834.  Γπñá ¿ «íαáΓ¡«. Äñ¡á¬« Γᬫ⌐ ßΓ¿½∞ »α«úαá¼¼¿α«óá¡¿∩ ó ßó«Ñ¼
  835.  ßπΘÑßΓóÑ ∩ó½∩ÑΓß∩ α¿ß¬«óá¡¡δ¼, »«ß¬«½∞¬π ºáó¿ß¿Γ «Γ ñÑΓá½Ñ⌐
  836.  αÑ὿ºáµ¿¿ ¿ áασ¿ΓѬΓπαδ ¼áΦ¿¡δ ¿ ¼«ªÑΓ »α¿óÑßΓ¿ ¬ ¡Ñ»αá-
  837.  ó¿½∞¡δ¼ αѺπ½∞ΓáΓá¼ ¡á ¬«¡¬αÑΓ¡«¼ ¿ß»«½∞ºπѼ«¼ óἿ ¬«¼»¿½∩-
  838.  Γ«αÑ. Éáºπ¼¡ÑÑ óßεñπ ¿ß»«½∞º«óáΓ∞ »«½¡δÑ «»¿ßá¡¿∩. (ÄΓ½áñ«τ-
  839.  ¡á∩ »α«úαá¼¼á LINT »αÑñπ»αÑñ¿Γ « Γá¬¿σ ¬«¡ßΓαπ¬µ¿∩σ, Ñß½¿
  840.  «¡¿ »« ¡Ñ«ßë᫪¡«ßΓ¿ óßÑ ªÑ »«∩ó∩Γß∩).
  841.  
  842.      5.7. î¡«ú«¼Ñα¡δÑ ¼áßß¿óδ.
  843.  
  844.      é ∩ºδ¬Ñ "C" »αÑñπß¼«ΓαÑ¡δ »α∩¼«πú«½∞¡δÑ ¼¡«ú«¼Ñα¡δÑ ¼áß-
  845.  ß¿óδ, σ«Γ∩ ¡á »αá¬Γ¿¬Ñ ßπΘÑßΓóπÑΓ ΓÑ¡ñÑ¡µ¿∩ ¬ ¿σ º¡áτ¿Γѽ∞¡«
  846.  í«½ÑÑ  αÑñ¬«¼π ¿ß»«½∞º«óá¡¿ε »« ßαáó¡Ñ¡¿ε ß ¼áßß¿óἿ π¬áºá-
  847.  ΓѽÑ⌐. é φΓ«¼ αáºñѽѠ¼δ αáßß¼«Γα¿¼ ¡Ñ¬«Γ«αδÑ ¿σ ßó«⌐ßΓóá.
  848.      Éáßß¼«Γα¿¼ ºáñáτπ »αÑ«íαẫóá¡¿∩ ñ¡∩ ¼Ñß∩µá ó ñÑ¡∞  ú«ñá
  849.  ¿  ¡á«í«α«Γ. ìá»α¿¼Ñα, 1-«Ñ ¼áαΓá ∩ó½∩ÑΓß∩ 60-¼ ñ¡Ñ¼ ¡Ñó¿ß«-
  850.  ¬«ß¡«ú« ú«ñá ¿ 61-¼ ñ¡Ñ¼ ó¿ß«¬«ß¡«ú«  ú«ñá.  äáóá⌐ΓÑ  óóÑñѼ
  851.  ñóÑ  Σπ¡¬µ¿¿ ñ½∩ óδ»«½¡Ñ¡¿∩ φΓ¿σ »αÑ«íαẫóá¡¿⌐: DAY_OF_YEAR
  852.  »αÑ«íαáºπÑΓ ¼Ñß∩µ ¿ ñÑ¡∞ ó ñÑ¡∞ ú«ñá, á MONTH_DAY »αÑ«íαáºπ-
  853.  ÑΓ  ñÑ¡∞  ú«ñá ó ¼Ñß∩µ ¿ ñÑ¡∞. Æá¬ ¬á¬ φΓá »«ß½Ññ¡∩∩ Σπ¡¬µ¿∩
  854.  ó«ºóαáΘáÑΓ ñóá º¡áτÑ¡¿∩, Γ« áαúπ¼Ñ¡Γδ ¼Ñß∩µá  ¿  ñ¡∩  ñ«½ª¡δ
  855.  íδΓ∞ π¬áºáΓѽ∩¼¿:
  856.  
  857.   MONTH_DAY(1977, 60, &M, &D)
  858.  
  859.  Å«½áúáÑΓ M αáó¡δ¼ 3 ¿ D αáó¡δ¼ 1 (1-«Ñ ¼áαΓá).
  860.      ÄíÑ φΓ¿ Σπ¡¬µ¿¿ ¡πªñáεΓß∩ ó «ñ¡«⌐ ¿ Γ«⌐ ªÑ ¿¡Σ«α¼áµ¿«¡-
  861.  ¡«⌐ Γáí½¿µÑ, π¬áºδóáεΘÑ⌐ τ¿ß½« ñ¡Ñ⌐ ó ¬áªñ«¼ ¼Ñß∩µÑ. Æá¬ ¬á¬
  862.  τ¿ß½« ñ¡Ñ⌐ ó ¼Ñß∩µÑ ó ó¿ß«¬«ß¡«¼ ¿ ó ¡Ñó¿ß«¬«ß¡«¼ ú«ñπ «Γ½¿-
  863.  τáÑΓß∩, Γ« »α«ΘÑ »αÑñßΓáó¿Γ∞ ¿σ ó ó¿ñÑ ñóπσ ßΓ᫬ ñóπ¼Ñα¡«ú«
  864.  ¼áßß¿óá, τѼ »δΓáΓ∞ß∩ »α«ß½Ñª¿óáΓ∞ ó« óαѼ∩ óδτ¿ß½Ñ¡¿⌐, τΓ«
  865.  ¿¼Ñ¡¡« »α«¿ßσ«ñ¿Γ ó ΣÑóαá½Ñ. é«Γ φëà¼áß߿󠿠óδ»«½¡∩εΘ¿Ñ
  866.  φΓ¿ »αÑ«íαẫóá¡¿∩ Σπ¡¬µ¿¿:
  867.  
  868.  STATIC INT DAY_TAB[2][13] = {
  869.       (0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
  870.       (0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  871.  };         
  872.                            - 113 -
  873.  
  874.  DAY_OF_YEAR(YEAR, MONTH, DAY)      /* SET DAY OF YEAR */
  875.  INT YEAR, MONTH, DAY;        /* FROM MONTH & DAY */
  876.  {
  877.      INT I, LEAP;
  878.    LEAP = YEAR%4 == 0 && YEAR%100 != 0 \!\! YEAR%400 == 0;
  879.      FOR (I = 1; I < MONTH; I++)
  880.   DAY += DAY_TAB[LEAP][I];
  881.      RETURN(DAY);
  882. {
  883.  
  884. MONTH_DAY(YEAR, YEARDAY, PMONTH, PDAY) /*SET MONTH,DAY */
  885. INT YEAR, YEARDAY, *PMONTH, *PDAY; /* FROM DAY OF YEAR */
  886. {
  887.   LEAP = YEAR%4 == 0 && YEAR%100 != 0 \!\! YEAR%400 == 0;
  888.     FOR (I = 1; YEARDAY > DAY_TAB[LEAP][I]; I++)
  889.  YEARDAY -= DAY_TAB[LEAP][I];
  890.     *PMONTH = I;
  891.     *PDAY = YEARDAY;
  892. }
  893.  
  894.  
  895.  îáßß¿ó  DAY_TAB ñ«½ªÑ¡ íδΓ∞ ó¡ÑΦ¡¿¼ ¬á¬ ñ½∩ DAY_OF_YEAR, Γá¬
  896.  ¿ ñ½∩ MONTH_DAY, »«ß¬«½∞¬π «¡ ¿ß»«½∞ºπÑΓß∩ «íÑ¿¼¿ φΓ¿¼¿ Σπ¡-
  897.  ¬µ¿∩¼¿.
  898.      îáßß¿ó DAY_TAB ∩ó½∩ÑΓß∩ »Ñαóδ¼ ñóπ¼Ñα¡δ¼ ¼áßß¿ó«¼, ß ¬«-
  899.  Γ«αδ¼ ¼δ ¿¼ÑѼ ñѽ«. Å« «»αÑñѽѡ¿ε ó "C"  ñóπ¼Ñα¡δ⌐  ¼áßß¿ó
  900.  »« ßπΘÑßΓóπ ∩ó½∩ÑΓß∩ «ñ¡«¼Ñα¡δ¼ ¼áßß¿ó«¼, ¬áªñδ⌐ φ½Ñ¼Ñ¡Γ ¬«-
  901.  Γ«α«ú« ∩ó½∩ÑΓß∩ ¼áßß¿ó«¼. Å«φΓ«¼π ¿¡ñѬßδ ºá»¿ßδóáεΓß∩ ¬á¬
  902.  
  903.  DAY_TAB[I][J]
  904.  á ¡Ñ
  905.  DAY_TAB [I, J]
  906.  
  907.  ¬á¬ ó í«½∞Φ¿¡ßΓóÑ ∩ºδ¬«ó. é «ßΓá½∞¡«¼ ß ñóπ¼Ñα¡δ¼¿ ¼áßß¿óἿ
  908.  ¼«ª¡«  ó  «ß¡«ó¡«¼ «íαáΘáΓ∞ß∩ Γᬿ¼ ªÑ «íαẫ¼, ¬á¬ ó ñαπú¿σ
  909.  ∩ºδ¬áσ. ¥½Ñ¼Ñ¡Γδ σαá¡∩Γß∩ »« ßΓ᫬á¼, Γ.Ñ. Åα¿  «íαáΘÑ¡¿¿  ¬
  910.  φ½Ñ¼Ñ¡Γá¼ ó »«α∩ñ¬Ñ ¿σ αẼÑΘÑ¡¿∩ ó »á¼∩Γ¿ íδßΓαÑÑ óßÑú« ¿º-
  911.  ¼Ñ¡∩ÑΓß∩ ßá¼δ⌐ »αáóδ⌐ ¿¡ñѬß.
  912.      îáß߿󠿡¿µ¿á½¿º¿απÑΓß∩ ß »«¼«Θ∞ε ß»¿ß¬á ¡áτá½∞¡δσ  º¡á-
  913.  τÑ¡¿⌐,  ºá¬½ετÑ¡¡δσ ó Σ¿úπα¡δѠ߬«í¬¿; ¬áªñá∩ ßΓ᫬á ñóπ¼Ñα-
  914.  ¡«ú« ¼áßß¿óá ¿¡¿µ¿á½¿º¿απÑΓß∩ ß««ΓóÑΓßΓóπεΘ¿¼ »«ñß»¿ß¬«¼. îδ
  915.  »«¼ÑßΓ¿½¿  ó ¡áτὫ ¼áßß¿óá DAY_TAB ßΓ«½íѵ ¿º ¡π½Ñ⌐ ñ½∩ Γ«-
  916.  ú«, τΓ«íδ ¡«¼Ñαá ¼Ñß∩µÑ󠿺¼Ñ¡∩½¿ß∞ ÑßΓÑßΓóÑ¡¡δ¼ «íαẫ¼  «Γ
  917.  1  ñ«  12, á ¡Ñ «Γ 0 ñ« 11. Æá¬ ¬á¬ ºá φ¬«¡«¼¿ε »á¼∩Γ¿ π ¡áß
  918.  »«¬á ¡Ñ ¡áúαáªñáεΓ, Γᬫ⌐ ß»«ß«í »α«ΘÑ, τѼ »«ñú«¡¬á  ¿¡ñѬ-
  919. ʧǗ.
  920.      àß½¿ ñóπ¼Ñα¡δ⌐ ¼áßß¿ó »ÑαÑñáÑΓß∩ Σπ¡¬µ¿¿, Γ« «»¿ßá¡¿Ñ
  921.  ß««ΓóÑΓßΓóπεΘÑú« áαúπ¼Ñ¡Γá Σπ¡¬µ¿¿ ñ«½ª¡« ß«ñÑαªáΓ∞ ¬«½¿τÑß-
  922.  Γó« ßΓ«½íµ«ó; ¬«½¿τÑßΓó« ßΓ᫬ ¡ÑßπΘÑßΓóÑ¡¡«, »«ß¬«½∞¬π, ¬á¬
  923.  ¿ »αѪñÑ, Σá¬Γ¿τÑ߬¿ »ÑαÑñáÑΓß∩ π¬áºáΓѽ∞. é ¡áΦѼ ¬«¡¬αÑΓ-
  924.  ¡«¼ ß½πτáÑ φΓ« π¬áºáΓѽ∞ «íΩÑ¬Γ«ó, ∩ó½∩εΘ¿σß∩ ¼áßß¿óἿ ¿º
  925.      
  926.                            - 114 -
  927.      
  928.  13 τ¿ßѽ Γ¿»á INT. Æá¬¿¼ «íαẫ¼, Ñß½¿ íδ ΓαÑí«óὫß∞ »ÑαÑ-
  929.  ñáΓ∞ ¼áßß¿ó DAY_TAB Σπ¡¬µ¿¿ F, Γ« «»¿ßá¡¿Ñ ó F ¿¼Ñ½« íδ ó¿ñ:
  930.  
  931.  F(DAY_TAB)
  932.  INT DAY_TAB[2][13];
  933.  {
  934.     ...
  935.  }
  936.  
  937.  Æá¬  ¬á¬ ¬«½¿τÑßΓó« ßΓ᫬ ∩ó½∩ÑΓß∩ ¡ÑßπΘÑßΓóÑ¡¡δ¼, Γ« «»¿ßá-
  938.  ¡¿Ñ áαúπ¼Ñ¡Γá ó F ¼«ú½« íδ íδΓ∞ Γᬿ¼:
  939.  
  940.   INT DAY_TAB[][13];
  941.  
  942.  ¿½¿ Γᬿ¼
  943.  
  944.   INT (*DAY_TAB)[13];
  945.  
  946.  ó ¬«Γ«α¼ ú«ó«α¿Γß∩, τΓ« áαúπ¼Ñ¡Γ ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¼áßß¿óá
  947.  ¿º  13  µÑ½δσ.  èαπú½δÑ  ß¬«í¬¿ ºñÑß∞ ¡Ñ«íσ«ñ¿¼δ, »«Γ«¼π τΓ«
  948.  ¬óáñαáΓ¡δѠ߬«í¬¿ [] ¿¼ÑεΓ í«½ÑÑ óδß«¬¿⌐ πα«óÑ¡∞  ßΓáαΦ¿¡ßΓ-
  949.  óá,  τѼ  *;  ¬á¬ ¼δ πó¿ñ¿¼ ó ß½ÑñπεΘѼ αáºñѽÑ, íѺ ¬απú½δσ
  950.  ß¬«í«¬
  951.       
  952.   INT *DAY_TAB[13];
  953.  
  954.  ∩ó½∩ÑΓß∩ «»¿ß᡿Ѽ ¼áßß¿óá ¿º 13 π¬áºáΓѽÑ⌐ ¡á µÑ½δÑ.
  955.           
  956.      5.8. îáßß¿óδ π¬áºáΓѽÑ⌐; π¬áºáΓѽ¿ π¬áºáΓѽÑ⌐
  957.      Æá¬ ¬á¬ π¬áºáΓѽ¿ ßἿ ∩ó½∩εΓß∩ »ÑαѼѡ¡δ¼¿, Γ« óδ ó»«½-
  958.  ¡Ñ ¼«ú½¿ íδ «ª¿ñáΓ∞ ¿ß»«½∞º«óá¡¿∩ ¼áßß¿óá π¬áºáΓѽÑ⌐. ¥Γ«
  959.  ñÑ⌐ßΓó¿Γѽ∞¡« Γá¬. îδ »α«¿½½εßΓα¿απѼ φΓ« ¡á»¿ß᡿Ѽ »α«ú-
  960.  αá¼¼δ ß«αΓ¿α«ó¬¿ ó á½Σáó¿Γ¡«¼ »«α∩ñ¬Ñ ¡áí«αá ΓѬßΓ«óδσ
  961.  ßΓ᫬, »αÑñѽ∞¡« π»α«ΘÑ¡¡«ú« óáα¿á¡Γá πΓ¿½¿Γδ SORT «»Ñαᵿ-
  962.  «¡¡«⌐ ß¿ßΓѼ UNIX.
  963.      é ú½áóÑ 3 ¼δ »α¿óѽ¿ Σπ¡¬µ¿ε ß«αΓ¿α«ó¬¿ »« Φѽ½π, ¬«Γ«-
  964.  αá∩ π»«α∩ñ«τ¿óá½á ¼áßß¿ó µÑ½δσ. ¥Γ«Γ ªÑ á½ú«α¿Γ¼ íπñÑΓ αáí«-
  965.  ΓáΓ∞ ¿ ºñÑß∞, σ«Γ∩ ΓÑ»Ñα∞ ¼δ íπñѼ ¿¼ÑΓ∞ ñѽ« ß« ßΓα«τ¬á¼¿
  966.  ΓѬßΓá αẽ¿τ¡«⌐ ñ½¿¡δ, ¬«Γ«αδÑ, ó «Γ½¿τ¿Ñ «Γ µÑ½δσ, ¡Ñ½∞º∩
  967.  ßαáó¡¿óáΓ∞ ¿½¿ »ÑαѼÑΘáΓ∞ ß »«¼«Θ∞ε «ñ¡«⌐ «»Ñαᵿ¿. îδ ¡πª-
  968.  ñáѼß∩ ó Γᬫ¼ »αÑñßΓáó½Ñ¡¿¿ ñá¡¡δσ, ¬«Γ«α«Ñ íδ »«ºó«½∩½«
  969.  πñ«í¡« ¿ φΣΣÑ¬Γ¿ó¡« «íαáíáΓδóáΓ∞ ßΓ᫬¿ ΓѬßΓá »ÑαѼѡ¡«⌐
  970.  ñ½¿¡δ.
  971.      çñÑß∞ ¿ ó«º¡¿¬áεΓ ¼áßß¿óδ π¬áºáΓѽÑ⌐. àß½¿ »«ñ½ÑªáΘ¿Ñ
  972.  ß«αΓ¿α«ó¬Ñ ß᫬¿ σαá¡∩Γß∩ «ñ¡á ºá ñαπú«⌐ ó ñ½¿¡¡«¼ ß¿¼ó«½∞-
  973.  ¡«¼ ¼áßß¿óÑ (π»αáó½∩Ѽ«¼, ¡á»α¿¼Ñα, Σπ¡¬µ¿Ñ⌐ ALLOC), Γ« ¬
  974.  ¬áªñ«⌐ ßΓα«¬Ñ ¼«ª¡« «íαáΓ¿Γ∞ß∩ ß »«¼«Θ∞ε π¬áºáΓѽ∩ ¡á ÑÑ
  975.  »Ñαóδ⌐ ß¿¼ó«½. æá¼¿ π¬áºáΓѽ¿ ¼«ª¡« σαá¡¿Γ∞ ó ¼áßß¿óÑ. ñóÑ
  976.  ßΓ᫬¿ ¼«ª¡« ßαáó¡¿Γ∞, »ÑαÑñáó ¿σ π¬áºáΓѽ¿ Σπ¡¬µ¿¿ STRCMP.
  977.      
  978.                            - 115 -
  979.      
  980.  àß½¿ ñóÑ αáß»«½«ªÑ¡¡δÑ ó ¡Ñ»αáó¿½∞¡«¼ »«α∩ñ¬Ñ ßΓ᫬¿ ñ«½ª¡δ
  981.  íδΓ∞ »ÑαÑßΓáó½Ñ¡δ, Γ« Σá¬Γ¿τÑ߬¿ »ÑαÑßΓáó½∩εΓß∩ π¬áºáΓѽ¿ ó
  982.  ¼áßß¿óÑ π¬áºáΓѽÑ⌐, á ¡Ñ ßἿ ΓѬßΓδ ßΓ᫬. ¥Γ¿¼ ¿ß¬½ετáεΓß∩
  983.  ßαáºπ ñóÑ ßó∩ºá¡¡δÑ »α«í½Ñ¼δ: ß½«ª¡«ú« π»αáó½Ñ¡¿∩ »á¼∩Γ∞ε ¿
  984.  í«½∞Φ¿σ ñ«»«½¡¿Γѽ∞¡δσ ºáΓαáΓ ¡á Σá¬Γ¿τÑ߬πε »ÑαÑßΓá¡«ó¬π
  985.  ßΓ᫬.
  986.      Åα«µÑßß ß«αΓ¿α«ó¬¿ ó¬½ετáÑΓ Γα¿ Φáúá:
  987.  
  988.       τΓÑ¡¿Ñ óßÑσ ßΓ᫬ óó«ñá
  989.       ¿σ ß«αΓ¿α«ó¬á
  990.       óδó«ñ ¿σ ó »αáó¿½∞¡«¼ »«α∩ñ¬Ñ
  991.  
  992.  èᬠ«íδτ¡«, ½πτΦÑ αáºñѽ¿Γ∞ »α«úαá¼¼π ¡á ¡Ñ߬«½∞¬« Σπ¡¬µ¿⌐ ó
  993.  ß««ΓóÑΓßΓó¿¿ ß ÑßΓÑßΓóÑ¡¡δ¼ ñѽѡ¿Ñ¼ ºáñáτ¿ ¿ óδñѽ¿Γ∞ óÑñπ-
  994.  Θπε Σπ¡¬µ¿ε, π»αáó½∩εΘπε αáí«Γ«⌐ óßÑ⌐ »α«úαá¼¼δ.
  995.  äáóá⌐ΓÑ «Γ½«ª¿¼ ¡á ¡Ñ¬«Γ«α«Ñ óαѼ∩ αáßß¼«ΓαÑ¡¿Ñ Φáúá ß«αΓ¿-
  996.  α«ó¬¿ ¿ ß«ßαÑñ«Γ«τ¿¼ß∩ ¡á ßΓαπ¬ΓπαÑ ñá¡¡δσ ¿ óó«ñÑ-óδó«ñÑ.
  997.  öπ¡¬µ¿∩, «ßπΘÑßΓó½∩εΘá∩ óó«ñ, ñ«½ª¡á ¿ºó½Ñτ∞ ß¿¼ó«½δ ¬áªñ«⌐
  998.  ßΓ᫬¿, ºá»«¼¡¿Γ∞ ¿σ ¿ »«ßΓα«¿Γ∞ ¼áßß¿ó π¬áºáΓѽÑ⌐ ßΓ᫬.
  999.  Ä¡á ñ«½ª¡á ΓᬪѠ»«ñßτ¿ΓáΓ∞ τ¿ß½« ßΓ᫬ ó« óó«ñÑ, Γᬠ¬á¬
  1000.  φΓá ¿¡Σ«α¼áµ¿∩ ¡Ñ«íσ«ñ¿¼á »α¿ ß«αΓ¿α«ó¬Ñ ¿ óδó«ñÑ. Γᬠ¬á¬
  1001.  Σπ¡¬µ¿∩ óó«ñá ó ß«ßΓ«∩¡¿¿ ß»αáó¿Γ∞ß∩ Γ«½∞¬« ß ¬«¡Ñτ¡δ¼ τ¿ß-
  1002.  ½«¼ óó«ñ¿¼δσ ßΓ᫬, ó ß½πτáÑ ß½¿Φ¬«¼ í«½∞Φ«ú« ¿σ τ¿ß½á «¡á
  1003.  ¼«ªÑΓ ó«ºóαáΘáΓ∞ ¡Ñ¬«Γ«α«Ñ τ¿ß½«, «Γ½¿τ¡«Ñ «Γ ó«º¼«ª¡«ú«
  1004.  τ¿ß½á ßΓ᫬, ¡á»α¿¼Ñα -1. öπ¡¬µ¿∩ «ßπΘÑßΓó½∩εΘá∩ óδó«ñ, ñ«½-
  1005.  ª¡á »ÑτáΓáΓ∞ ßΓ᫬¿ ó Γ«¼ »«α∩ñ¬Ñ, ó ¬á¬«¼ «¡¿ »«∩ó½∩εΓß∩ ó
  1006.  ¼áßß¿óÑ π¬áºáΓѽÑ⌐.
  1007.  
  1008.   #DEFINE NULL 0
  1009.   #DEFINE LINES 100 /* MAX LINES TO BE SORTED */
  1010.    
  1011.   MAIN()    /* SORT INPUT LINES */
  1012.   \(
  1013.    CHAR *LINEPTR[LINES]; /*POINTERS TO TEXT LINES */
  1014.    INT NLINES;     /* NUMBER OF INPUT LINES READ */
  1015.    
  1016.    IF ((NLINES = READLINES(LINEPTR, LINES)) >= 0) \(
  1017.       SORT(LINEPTR, NLINES);
  1018.       WRITELINES(LINEPTR, NLINES);
  1019.    \)
  1020.    ELSE
  1021.       PRINTF("INPUT TOO BIG TO SORT\N");
  1022.   \)
  1023.    
  1024.   #DEFINE MAXLEN 1000
  1025.             
  1026.                            - 116 -
  1027.      
  1028.   READLINES(LINEPTR, MAXLINES) /* READ INPUT LINES */
  1029.   CHAR *LINEPTR[];       /* FOR SORTING */
  1030.   INT MAXLINES;
  1031.   \(
  1032.    INT LEN, NLINES;
  1033.    CHAR *P, *ALLOC(), LINE[MAXLEN];
  1034.    
  1035.    NLINES = 0;
  1036.    WHILE ((LEN = GETLINE(LINE, MAXLEN)) > 0)
  1037.       IF (NLINES >= MAXLINES)
  1038.               RETURN(-1);
  1039.       ELSE IF ((P = ALLOC(LEN)) == NULL)
  1040.               RETURN (-1);
  1041.       ELSE \(
  1042.            LINE[LEN-1] = '\0'; /* ZAP NEWLINE */
  1043.            STRCPY(P,LINE);
  1044.            LINEPTR[NLINES++] = P;
  1045.        \)
  1046.     RETURN(NLINES);
  1047.    \)
  1048.  
  1049.  æ¿¼ó«½ ¡«ó«⌐ ßΓ᫬¿ ó ¬«¡µÑ ¬áªñ«⌐ ßΓ᫬¿ πñá½∩ÑΓß∩, ΓᬠτΓ«
  1050.  «¡ ¡¿¬á¬ ¡Ñ íπñÑΓ ó½¿∩Γ∞ ¡á »«α∩ñ«¬, ó ¬«Γ«α«¼ ß«αΓ¿απεΓß∩
  1051.  ßΓ᫬¿.
  1052.  
  1053.  WRITELINES(LINEPTR, NLINES) /* WRITE OUTPUT LINES */
  1054.  CHAR *LINEPTR[];
  1055.  INT NLINES;
  1056.  \(
  1057.   INT I;
  1058.  
  1059.   FOR (I = 0; I < NLINES; I++)
  1060.      PRINTF("%S\N", LINEPTR[I]);
  1061.  \)
  1062.  
  1063.      æπΘÑßΓóÑ¡¡« ¡«óδ¼ ó φΓ«⌐ »α«úαἼѠ∩ó½∩ÑΓß∩ «»¿ßá¡¿Ñ
  1064.  
  1065.   CHAR *LINEPTR[LINES];
  1066.  
  1067.  ¬«Γ«α«Ñ ß««íΘáÑΓ, τΓ« LINEPTR ∩ó½∩ÑΓß∩ ¼áß߿󫼠¿º LINES
  1068.  φ½Ñ¼Ñ¡Γ«ó, ¬áªñδ⌐ ¿º ¬«Γ«αδσ - π¬áºáΓѽ∞ ¡á »ÑαѼѡ¡δÑ Γ¿»á
  1069.  CHAR. ¥Γ« «º¡áτáÑΓ, τΓ« LINEPTR[I] - π¬áºáΓѽ∞ ¡á ß¿¼ó«½δ, á
  1070.  *LINEPTR[I] ¿ºó½Ñ¬áÑΓ ß¿¼ó«½.
  1071.      Æá¬ ¬á¬ ßá¼ LINEPTR ∩ó½∩ÑΓß∩ ¼áßß¿ó«¼, ¬«Γ«αδ⌐ »ÑαÑñáÑΓ-
  1072.  ß∩ Σπ¡¬µ¿¿ WRITELINES, ß ¡¿¼ ¼«ª¡« «íαáΘáΓ∞ß∩ ¬á¬ ß π¬áºáΓÑ-
  1073.  ½Ñ¼ Γ«τ¡« Γᬿ¼ ªÑ «íαẫ¼, ¬á¬ ó ¡áΦ¿σ í«½ÑÑ αá¡¡¿σ »α¿¼Ñ-
  1074.      
  1075.                            - 117 -
  1076.      
  1077.  αáσ. Æ«úñá »«ß½Ññ¡εε Σπ¡¬µ¿ε ¼«ª¡« »ÑαÑ»¿ßáΓ∞ ó ó¿ñÑ:
  1078.  
  1079.  WRITELINES(LINEPTR, NLINES) /* WRITE OUTPUT LINES */
  1080.  CHAR *LINEPTR[];
  1081.  INT NLINES;
  1082.  \(
  1083.   INT I;
  1084.  
  1085.   WHILE (--NLINES >= 0)
  1086.      PRINTF("%S\N", *LINEPTR++);
  1087.  \)
  1088.  
  1089.  
  1090.  ºñÑß∞ *LINEPTR ß¡áτá½á π¬áºδóáÑΓ ¡á »Ñαóπε ßΓ᫬π; ¬áªñ«Ñ
  1091.  πóѽ¿τÑ¡¿Ñ »ÑαÑñó¿úáÑΓ π¬áºáΓѽ∞ ¡á ß½ÑñπεΘπε ßΓ᫬π, ó Γ«
  1092.  óαѼ∩ ¬á¬ NLINES πíδóáÑΓ ñ« ¡π½∩.
  1093.      æ»αáó¿óΦ¿ß∞ ß óó«ñ«¼ ¿ óδó«ñ«¼, ¼δ ¼«ªÑ¼ »ÑαÑ⌐Γ¿ ¬ ß«α-
  1094.  Γ¿α«ó¬Ñ. »α«úαá¼¼á ß«αΓ¿α«ó¬¿ »« Φѽ½π ¿º ú½áóδ 3 ΓαÑíπÑΓ
  1095.  «τÑ¡∞ ¡Ñí«½∞Φ¿σ ¿º¼Ñ¡Ñ¡¿⌐: ñ«½ª¡δ íδΓ∞ ¼«ñ¿Σ¿µ¿α«óá¡δ «»¿ßá-
  1096.  ¡¿∩, á «»Ñαᵿ∩ ßαáó¡Ñ¡¿∩ óδñѽѡá ó «Γñѽ∞¡πε Σπ¡¬µ¿ε. Äß-
  1097.  ¡«ó¡«⌐ á½ú«α¿Γ¼ «ßΓáÑΓß∩ ΓѼ ªÑ ßá¼δ¼, ¿ φΓ« ñáÑΓ ¡á¼ «»αÑ-
  1098.  ñѽѡ¡πε πóÑαÑ¡¡«ßΓ∞, τΓ« «¡ »«-»αѪ¡Ñ¼π íπñÑΓ αáí«ΓáΓ∞.
  1099.  
  1100.   SORT(V, N)   /* SORT STRINGS V[0] ... V[N-1] */
  1101.   CHAR *V[];   /* INTO INCREASING ORDER */
  1102.   INT N;
  1103.   \(
  1104.    INT GAP, I, J;
  1105.    CHAR *TEMP;
  1106.    
  1107.    FOR (GAP = N/2; GAP > 0; GAP /= 2)
  1108.        FOR (I = GAP; I < N; I++)
  1109.       FOR (J = I - GAP; J >= 0; J -= GAP) \(
  1110.           IF (STRCMP(V[J], V[J+GAP]) <= 0)
  1111.               BREAK;
  1112.           TEMP = V[J];
  1113.           V[J] = V[J+GAP];
  1114.           V[J+GAP] = TEMP;
  1115.       \)
  1116.   \)
  1117.    
  1118.  
  1119.  Æá¬ ¬á¬ ¬áªñδ⌐ «Γñѽ∞¡δ⌐ φ½Ñ¼Ñ¡Γ ¼áßß¿óá V (¿¼∩ Σ«α¼á½∞¡«ú«
  1120.  »áαá¼ÑΓαá, ß««ΓóÑΓßΓóπεΘÑú« LINEPTR) ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á
  1121.  ß¿¼ó«½δ, Γ« ¿ TEMP ñ«½ªÑ¡ íδΓ∞ π¬áºáΓѽѼ ¡á ß¿¼ó«½δ, τΓ«íδ
  1122.  ¿σ í佫 ¼«ª¡« ¬«»¿α«óáΓ∞ ñαπú ó ñαπúá.
  1123.      îδ ¡á»¿ß὿ φΓπ »α«úαá¼¼π »« ó«º¼«ª¡«ßΓ¿ í«½ÑÑ »α«ßΓ« ß
  1124.  ΓѼ, τΓ«íδ »«íδßΓαÑÑ »«½πτ¿Γ∞ αáí«ΓáεΘπε »α«úαá¼¼π. Ä¡á ¼«ú-
  1125.  ½á íδ αáí«ΓáΓ∞ íδßΓαÑÑ, Ñß½¿, ¡á»α¿¼Ñα, óó«ñ¿Γ∞ ßΓ᫬¿ ¡Ñ-
  1126.  »«ßαÑñßΓóÑ¡¡« ó ¼áßß¿ó, π»αáó½∩Ѽδ⌐ Σπ¡¬µ¿Ñ⌐ READLINES, á ¡Ñ
  1127.  ¬«»¿α«óáΓ∞ ¿σ ó LINE, á ºáΓѼ ó ß¬αδΓ«Ñ ¼ÑßΓ« ß »«¼«Θ∞ε Σπ¡-
  1128.      
  1129.                            - 118 -
  1130.      
  1131.  ¬µ¿¿ ALLOC. ¡« ¼δ ßτ¿ΓáѼ, τΓ« íπñÑΓ αáºπ¼¡ÑÑ »Ñαó«¡áτá½∞¡δ⌐
  1132.  óáα¿á¡Γ ßñѽáΓ∞ í«½ÑÑ »α«ßΓδ¼ ñ½∩ »«¡¿¼á¡¿∩, á «í "φΣΣÑ¬Γ¿ó-
  1133.  ¡«ßΓ¿" »«ºáí«Γ¿Γ∞ß∩ »«ºñ¡ÑÑ. éßÑ ªÑ, »«-ó¿ñ¿¼«¼π, ß»«ß«í,
  1134.  »«ºó«½∩εΘ¿⌐ ñ«í¿Γ∞ß∩ ºá¼ÑΓ¡«ú« π߬«αÑ¡¿∩ αáí«Γδ »α«úαá¼¼δ
  1135.  ß«ßΓ«¿Γ ¡Ñ ó ¿ß¬½ετÑ¡¿¿ ½¿Φ¡Ñú« ¬«»¿α«óá¡¿∩ óó«ñ¿¼δσ ßΓ᫬.
  1136.  ü«½ÑÑ óÑα«∩Γ¡«, τΓ« ßπΘÑßΓóÑ¡¡«⌐ αạ¿µδ ¼«ª¡« ñ«ßΓ¿τ∞ ºá
  1137.  ßτÑΓ ºá¼Ñ¡δ ß«αΓ¿α«ó¬¿ »« Φѽ½π ¡á ¡ÑτΓ« ½πτΦÑÑ, ¡á»α¿¼Ñα,
  1138.  ¡á ¼ÑΓ«ñ íδßΓα«⌐ ß«αΓ¿α«ó¬¿.
  1139.      é ú½áóÑ 1 ¼δ «Γ¼Ñτ὿, τΓ« »«ß¬«½∞¬π ó µ¿¬½áσ WHILE ¿
  1140.  FOR »α«óÑα¬á «ßπΘÑßΓó½∩ÑΓß∩ ñ« Γ«ú«, ¬á¬ Γѽ« µ¿¬½á óδ»«½-
  1141.  ¡¿Γß∩ σ«Γ∩ íδ «ñ¿¡ αáº, φΓ¿ µ¿¬½δ «¬áºδóáεΓß∩ πñ«í¡δ¼¿ ñ½∩
  1142.  «íÑß»ÑτÑ¡¿∩ »αáó¿½∞¡«⌐ αáí«Γδ »α«úαá¼¼δ »α¿ úαá¡¿τ¡δσ º¡áτÑ-
  1143.  ¡¿∩σ, ó τáßΓ¡«ßΓ¿, ¬«úñá óó«ñá ó««íΘÑ ¡ÑΓ. ÄτÑ¡∞ »«½Ñº¡«
  1144.  »α«ß¼«ΓαÑΓ∞ óßÑ Σπ¡¬µ¿¿ »α«úαá¼¼δ ß«αΓ¿α«ó¬¿, αáºí¿αá∩ß∞,
  1145.  τΓ« »α«¿ßσ«ñ¿Γ, Ñß½¿ óó«ñ¿¼δ⌐ ΓѬßΓ «ΓßπΓßΓóπÑΓ.
  1146.      ô»α᪡ѡ¿Ñ 5-5.
  1147.      --------------
  1148.      ÅÑαÑ»¿Φ¿ΓÑ Σπ¡¬µ¿ε READLINES Γᬿ¼ «íαẫ¼, τΓ«íδ «¡á
  1149.  »«¼ÑΘá½á ßΓ᫬¿ ó ¼áßß¿ó, »αÑñ«ßΓáó½∩Ѽδ⌐ Σπ¡¬µ¿Ñ⌐ MAIN, á
  1150.  ¡Ñ ó »á¼∩Γ∞, π»αáó½∩Ѽπε «íαáΘÑ¡¿∩¼¿ ¬ Σπ¡¬µ¿¿ ALLOC. ìá-
  1151.  ß¬«½∞¬« íδßΓαÑÑ ßΓá½á »α«úαá¼¼á?
  1152.  
  1153.      5.9. ê¡¿µ¿á½¿ºáµ¿∩ ¼áßß¿ó«ó π¬áºáΓѽÑ⌐.
  1154.      Éáßß¼«Γα¿¼ ºáñáτπ ¡á»¿ßá¡¿∩ Σπ¡¬µ¿¿ MONTH_NAME(N), ¬«Γ«-
  1155.  αá∩ ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ß¿¼ó«½∞¡πε ßΓ᫬π, ß«ñÑαªáΘπε
  1156.  ¿¼∩ N-ú« ¼Ñß∩µá. ¥Γ« ¿ñÑá½∞¡á∩ ºáñáτá ñ½∩ »α¿¼Ñ¡Ñ¡¿∩ ó¡πΓ-
  1157.  αÑ¡¡Ñú« ßΓáΓ¿τÑ߬«ú« ¼áßß¿óá. öπ¡¬µ¿∩ MONTH_NAME ß«ñÑনΓ
  1158.  ½«¬á½∞¡δ⌐ ¼áßß¿ó ß¿¼ó«½∞¡δσ ßΓ᫬ ¿ »α¿ «íαáΘÑ¡¿¿ ¬ ¡Ñ⌐ ó«º-
  1159.  óαáΘáÑΓ π¬áºáΓѽ∞ ¡πª¡«⌐ ßΓ᫬¿. ÆÑ¼á ¡áßΓ«∩ΘÑú« αáºñѽá -
  1160.  ¬á¬ ¿¡¿µ¿á½¿º¿α«óáΓ∞ φëà¼áß߿󠿼ѡ.
  1161.  
  1162.  CHAR *MONTH_NAME(N) /* RETURN NAME OF N-TH MONTH */
  1163.  INT N;
  1164.  \(
  1165.   STATIC CHAR *NAME[] = \(
  1166.      "ILLEGAL MONTH",
  1167.      "JANUARY",
  1168.      "FEBRUARY",
  1169.      "MARCH",
  1170.      "APRIL",
  1171.      "MAY",
  1172.      "JUN",
  1173.      "JULY",
  1174.      "AUGUST",
  1175.      "SEPTEMBER",
  1176.      "OCTOBER",
  1177.      "NOVEMBER",
  1178.      "DECEMBER"
  1179.   \);
  1180.       RETURN ((N < 1 \!\! N > 12) ? NAME[0] : NAME[N]);
  1181.  \)         
  1182.                            - 119 -
  1183.  
  1184.  Ä»¿ßá¡¿Ñ ¼áßß¿óá π¬áºáΓѽÑ⌐ ¡á ß¿¼ó«½δ NAME Γ«τ¡« ΓᬫѠªÑ,
  1185.  ¬á¬ á¡á½«ú¿τ¡«Ñ «»¿ßá¡¿Ñ LINEPTR ó »α¿¼ÑαÑ ß ß«αΓ¿α«ó¬«⌐.
  1186.  ê¡¿µ¿á½¿ºáΓ«α«¼ ∩ó½∩ÑΓß∩ »α«ßΓ« ß»¿ß«¬ ß¿¼ó«½∞¡δσ ßΓ᫬;
  1187.  ¬áªñá∩ ßΓα«¬á »α¿ßóá¿óáÑΓß∩ ß««ΓóÑΓßΓóπεΘÑ⌐ »«º¿µ¿¿ ó ¼áßß¿-
  1188.  óÑ. ü«½ÑÑ Γ«τ¡«, ß¿¼ó«½δ I-«⌐ ßΓ᫬¿ »«¼ÑΘáεΓß∩ ó ¬á¬«Ñ-Γ«
  1189.  ¿¡«Ñ ¼ÑßΓ«, á ÑÑ π¬áºáΓѽ∞ σαá¡¿Γß∩ ó NAME[I]. Å«ß¬«½∞¬π
  1190.  αẼÑα ¼áßß¿óá NAME ¡Ñ π¬áºá¡, ¬«¼»¿½∩Γ«α ßá¼ »«ñßτ¿ΓδóáÑΓ
  1191.  ¬«½¿τÑßΓó« ¿¡¿µ¿á½¿ºáΓ«α«ó ¿ ß««ΓóÑΓßΓóÑ¡¡« πßΓá¡áó½¿óáÑΓ
  1192.  »αáó¿½∞¡«Ñ τ¿ß½«.
  1193.  
  1194.      5.10. ô¬áºáΓѽ¿ ¿ ¼¡«ú«¼Ñα¡δÑ ¼áßß¿óδ
  1195.      ìáτ¿¡áεΘ¿Ñ ¿ºπτáΓ∞ ∩ºδ¬ "ß" ¿¡«úñá ßΓá¡«ó∩Γß∩ ó Γπ»¿¬
  1196.  »ÑαÑñ ó«»α«ß«¼ « αẽ¿τ¿¿ ¼Ñªñπ ñóπ¼Ñα¡δ¼ ¼áß߿󫼠¿ ¼áßß¿-
  1197.  ó«¼ π¬áºáΓѽÑ⌐, Γᬿ¼ ¬á¬ NAME ó »α¿óÑñÑ¡¡«¼ óδΦÑ »α¿¼ÑαÑ.
  1198.  àß½¿ ¿¼ÑεΓß∩ «»¿ßá¡¿∩
  1199.  
  1200.  INT A[10][10];
  1201.  INT *B[10];
  1202.  
  1203.  Γ« A ¿ B ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ßσ«ñ¡δ¼ «íαẫ¼ ó Γ«¼ ß¼δß½Ñ,
  1204.  τΓ« ¬á¬ A[5][5], Γᬠ¿ B[5][5] ∩ó½∩εΓß∩ ºá¬«¡¡δ¼¿ ßßδ½¬á¼¿
  1205.  ¡á «Γñѽ∞¡«Ñ τ¿ß½« Γ¿»á INT. ì« A - ¡áßΓ«∩Θ¿⌐ ¼áßß¿ó: »«ñ
  1206.  ¡Ñú« «Γó«ñ¿Γß∩ 100 ∩τÑѬ »á¼∩Γ¿ ¿ ñ½∩ ¡áσ«ªñÑ¡¿∩ ½εí«ú« π¬á-
  1207.  ºá¡¡«ú« φ½Ñ¼Ñ¡Γá »α«ó«ñ∩Γß∩ «íδτ¡δÑ óδτ¿ß½Ñ¡¿∩ ß »α∩¼«πú«½∞-
  1208.  ¡δ¼¿ ¿¡ñѬßἿ. ä½∩ B, «ñ¡á¬«, «»¿ßá¡¿Ñ óδñѽ∩ÑΓ Γ«½∞¬« 10
  1209.  π¬áºáΓѽÑ⌐; ¬áªñδ⌐ π¬áºáΓѽ∞ ñ«½ªÑ¡ íδΓ∞ πßΓá¡«ó½Ñ¡ Γá¬,
  1210.  τΓ«íδ «¡ π¬áºδóá½ ¡á ¼áßß¿ó µÑ½δσ. Ñß½¿ »αÑñ»«½«ª¿Γ∞, τΓ«
  1211.  ¬áªñδ⌐ ¿º ¡¿σ π¬áºδóáÑΓ ¡á ¼áß߿󠿺 10 φ½Ñ¼Ñ¡Γ«ó, Γ« Γ«úñá
  1212.  úñÑ-Γ« íπñÑΓ «ΓóÑñÑ¡« 100 ∩τÑѬ »á¼∩Γ¿ »½εß ÑΘÑ ñÑß∩Γ∞ ∩τÑѬ
  1213.  ñ½∩ π¬áºáΓѽÑ⌐. Æá¬¿¼ «íαẫ¼, ¼áßß¿ó π¬áºáΓѽÑ⌐ ¿ß»«½∞ºπÑΓ
  1214.  ¡Ñ߬«½∞¬« í«½∞Φ¿⌐ «íΩѼ »á¼∩Γ¿ ¿ ¼«ªÑΓ ΓαÑí«óáΓ∞ ¡á½¿τ¿Ñ ∩ó-
  1215.  ¡«ú« Φáúá ¿¡¿µ¿á½¿ºáµ¿¿. ì« »α¿ φΓ«¼ ó«º¡¿¬áεΓ ñóá »αÑ¿¼π-
  1216.  ΘÑßΓóá: ñ«ßΓπ» ¬ φ½Ñ¼Ñ¡Γπ «ßπΘÑßΓó½∩ÑΓß∩ ¬«ßóÑ¡¡« τÑαѺ π¬á-
  1217.  ºáΓѽ∞, á ¡Ñ »«ßαÑñßΓó«¼ π¼¡«ªÑ¡¿∩ ¿ ß½«ªÑ¡¿∩, ¿ ßΓ᫬¿ ¼áß-
  1218.  ß¿óá ¼«úπΓ ¿¼ÑΓ∞ αẽ¿τ¡δÑ ñ½¿¡δ. ¥Γ« «º¡áτáÑΓ, τΓ« ¬áªñδ⌐
  1219.  φ½Ñ¼Ñ¡Γ B ¡Ñ ñ«½ªÑ¡ «í∩ºáΓѽ∞¡« π¬áºδóáΓ∞ ¡á óÑ¬Γ«α ¿º 10
  1220.  φ½Ñ¼Ñ¡Γ«ó; ¡Ñ¬«Γ«αδÑ ¼«úπΓ π¬áºδóáΓ∞ ¡á óÑ¬Γ«α ¿º ñóπσ φ½Ñ-
  1221.  ¼Ñ¡Γ«ó, ñαπú¿Ñ - ¿º ñóáñµáΓ¿, á ΓαÑΓ∞¿ ¼«úπΓ ó««íΘÑ ¡¿ ¡á
  1222.  τΓ« ¡Ñ π¬áºδóáΓ∞.
  1223.      ò«Γ∩ ¼δ óѽ¿ φΓ« «íßπªñÑ¡¿Ñ ó ΓÑନ¡áσ µÑ½δσ, ¡Ñß«¼¡Ñ¡-
  1224.  ¡«, τáΘÑ óßÑú« ¼áßß¿óδ π¬áºáΓѽÑ⌐ ¿ß»«½∞ºπεΓß∩ Γá¬, ¬á¬ ¼δ
  1225.  »α«ñѼ«¡ßΓα¿α«ó὿ ¡á Σπ¡¬µ¿¿ MONTH_NAME, - ñ½∩ σαá¡Ñ¡¿∩
  1226.  ß¿¼ó«½∞¡δσ ßΓ᫬ αẽ¿τ¡«⌐ ñ½¿¡δ.
  1227.      ô»α᪡ѡ¿Ñ 5-6.
  1228.      --------------
  1229.      ÅÑαÑ»¿Φ¿ΓÑ Σπ¡¬µ¿¿ DAY_OF_YEAR ¿ MONTH_DAY, ¿ß»«½∞ºπ∩
  1230.  ó¼ÑßΓ« ¿¡ñѬßᵿ¿ π¬áºáΓѽ¿.
  1231.             
  1232.                            - 120 -
  1233.      
  1234.      5.11. è«¼á¡ñ¡á∩ ßΓ᫬á áαúπ¼Ñ¡Γ«ó
  1235.  
  1236.      æ¿ßΓѼ¡δÑ ßαÑñßΓóá, ¡á ¬«Γ«αδÑ «»¿αáÑΓß∩ αÑ὿ºáµ¿∩ ∩ºδ-
  1237.  ¬á "ß", »«ºó«½∩εΓ »ÑαÑñáóáΓ∞ ¬«¼á¡ñ¡πε ßΓ᫬π áαúπ¼Ñ¡Γ«ó ¿½¿
  1238.  »áαá¼ÑΓα«ó ¡áτ¿¡áεΘÑ⌐ óδ»«½¡∩Γ∞ß∩ »α«úαá¼¼Ñ. è«úñá Σπ¡¬µ¿∩
  1239.  MAIN óδºδóáÑΓß∩ ¬ ¿ß»«½¡Ñ¡¿ε, «¡á óδºδóáÑΓß∩ ß ñóπ¼∩ áαúπ-
  1240.  ¼Ñ¡ΓἿ. ÅÑαóδ⌐ áαúπ¼Ñ¡Γ (πß½«ó¡« ¡áºδóáѼδ⌐ ARGC) π¬áºδóáÑΓ
  1241.  τ¿ß½« áαúπ¼Ñ¡Γ«ó ó ¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ, ß ¬«Γ«α묨 »α«¿ßσ«ñ¿Γ
  1242.  «íαáΘÑ¡¿Ñ ¬ »α«úαá¼¼Ñ; óΓ«α«⌐ áαúπ¼Ñ¡Γ (ARGV) ∩ó½∩ÑΓß∩ π¬á-
  1243.  ºáΓѽѼ ¡á ¼áßß¿ó ß¿¼ó«½∞¡δσ ßΓ᫬, ß«ñÑαªáΘ¿σ φΓ¿ áαúπ¼Ñ¡-
  1244.  Γδ, »« «ñ¡«¼π ó ßΓ᫬Ñ. Éáí«Γá ß Γᬿ¼¿ ßΓα«¬á¼¿ - φΓ« «íδτ-
  1245.  ¡«Ñ ¿ß»«½∞º«óá¡¿Ñ ¼¡«ú«πα«ó¡Ñóδσ π¬áºáΓѽÑ⌐.
  1246.      æá¼πε »α«ßΓπε ¿½½εßΓαᵿε φΓ«⌐ ó«º¼«ª¡«ßΓ¿ ¿ ¡Ñ«íσ«ñ¿¼δσ
  1247.  »α¿ φΓ«¼ «»¿ßá¡¿⌐ ñáÑΓ »α«úαá¼¼á ECHO, ¬«Γ«αá∩ »α«ßΓ« »Ñτá-
  1248.  ΓáÑΓ ó «ñ¡π ßΓ᫬π áαúπ¼Ñ¡Γδ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿, αáºñѽ∩∩ ¿σ
  1249.  »α«íѽἿ. Æá¬¿¼ «íαẫ¼, Ñß½¿ ñá¡á ¬«¼á¡ñá
  1250.  
  1251.   ECHO HELLO, WORLD
  1252.  
  1253.  Γ« óδσ«ñ«¼ íπñÑΓ
  1254.  
  1255.   HELLO, WORLD
  1256.  
  1257.  »« ß«ú½áΦÑ¡¿ε ARGV[0] ∩ó½∩ÑΓß∩ ¿¼Ñ¡Ñ¼, »« ¬«Γ«α«¼π óδºδóáÑΓ-
  1258.  ß∩ »α«úαá¼¼á, ΓᬠτΓ« ARGC »« ¼Ñ¡∞ΦÑ⌐ ¼ÑαÑ αáóÑ¡ 1. é »α¿óÑ-
  1259.  ñÑ¡¡«¼ óδΦÑ »α¿¼ÑαÑ ARGC αáóÑ¡ 3, á ARGV[0], ARGV[1] ¿
  1260.  ARGV[2] αáó¡δ ß««ΓóÑΓßΓóÑ¡¡« "ECHO", "HELLO," ¿ "WORLD".
  1261.  ÅÑαóδ¼ Σá¬Γ¿τÑ߬¿¼ áúπ¼Ñ¡Γ«¼ ∩ó½∩ÑΓß∩ ARGV[1], á »«ß½Ññ¡¿¼ -
  1262.  ARGV[ARGC-1]. àß½¿ ARGC αáóÑ¡ 1, Γ« ºá ¿¼Ñ¡Ñ¼ »α«úαá¼¼δ ¡Ñ
  1263.  ß½ÑñπÑΓ ¡¿¬á¬«⌐ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ áαúπ¼Ñ¡Γ«ó. éßÑ φΓ« »«¬áºá-
  1264.  ¡« ó ECHO:
  1265.  
  1266.  MAIN(ARGC, ARGV) /* ECHO ARGUMENTS; 1ST VERSION */
  1267.  INT ARGC;
  1268.  CHAR *ARGV[];
  1269.  \(
  1270.     INT I;
  1271.  
  1272.     FOR (I = 1; I < ARGC; I++)
  1273.   PRINTF("%S%C", ARGV[I], (I<ARGC-1) ? ' ' : '\N');
  1274.  \)
  1275.  
  1276.  Å«ß¬«½∞¬π ARGV ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á ¼áßß¿ó π¬áºáΓѽÑ⌐, Γ«
  1277.  ßπΘÑßΓóπÑΓ ¡Ñ߬«½∞¬« ß»«ß«í«ó ¡á»¿ßá¡¿∩ φΓ«⌐ »α«úαá¼¼δ, ¿ß-
  1278.  »«½∞ºπεΘ¿σ αáí«Γπ ß π¬áºáΓѽѼ, á ¡Ñ ß ¿¡ñѬßᵿÑ⌐ ¼áßß¿óá.
  1279.  îδ »α«ñѼ«¡ßΓα¿απѼ ñóá óáα¿á¡Γá.
  1280.  
  1281.  MAIN(ARGC, ARGV) /* ECHO ARGUMENTS; 2ND VERSION */
  1282.  INT ARGC;
  1283.  CHAR *ARGV[];
  1284.  \(
  1285.     WHILE (--ARGC > 0)
  1286.   PRINTF("%S%C",*++ARGV, (ARGC > 1) ? ' ' : '\N');
  1287.  \)         
  1288.                            - 121 -
  1289.  
  1290.  Æá¬ ¬á¬ ARGV ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á ¡áτὫ ¼áßß¿óá ßΓ᫬-áα-
  1291.  úπ¼Ñ¡Γ«ó, Γ«, πóѽ¿τ¿ó Ñú« ¡á 1 (++ARGV), ¼δ óδ¡πªñáѼ Ñú«
  1292.  π¬áºδóáΓ∞ ¡á »«ñ½¿¡¡δ⌐ áαúπ¼Ñ¡Γ ARGV[1], á ¡Ñ ¡á ARGV[0].
  1293.  èáªñ«Ñ »«ß½ÑñπεΘÑÑ πóѽ¿τÑ¡¿Ñ »ÑαÑñó¿úáÑΓ Ñú« ¡á ß½ÑñπεΘ¿⌐
  1294.  áαúπ¼Ñ¡Γ; »α¿ φΓ«¼ *ARGV ßΓá¡«ó¿Γß∩ π¬áºáΓѽѼ ¡á φëàáαúπ-
  1295.  ¼Ñ¡Γ. «ñ¡«óαѼѡ¡« óѽ¿τ¿¡á ARGC π¼Ñ¡∞ΦáÑΓß∩; ¬«úñá «¡á «í-
  1296.  αáΓ¿Γß∩ ó ¡π½∞, óßÑ áαúπ¼Ñ¡Γδ íπñπΓ πªÑ ¡á»ÑτáΓá¡δ.
  1297.      äαπú«⌐ óáα¿á¡Γ:
  1298.  
  1299.   MAIN(ARGC, ARGV) /* ECHO ARGUMENTS; 3RD VERSION */
  1300.   INT ARGC;
  1301.   CHAR *ARGV[];
  1302.   \(
  1303.      WHILE (--ARGC > 0)
  1304.    PRINTF((ARGC > 1) ? "%S" : "%S\N", *++ARGV);
  1305.   \)
  1306.  
  1307.  ¥Γá óÑαß¿∩ »«¬áºδóáÑΓ, τΓ« áαúπ¼Ñ¡Γ Σ«α¼áΓá Σπ¡¬µ¿¿ PRINTF
  1308.  ¼«ªÑΓ íδΓ∞ óδαáªÑ¡¿Ñ¼, Γ«τ¡« ΓᬠªÑ, ¬á¬ ¿ ½εí«⌐ ñαπú«⌐. Æá-
  1309.  ¬«Ñ ¿ß»«½∞º«óá¡¿Ñ óßΓαÑτáÑΓß∩ ¡Ñ «τÑ¡∞ τáßΓ«, ¡« Ñú« óßÑ ªÑ
  1310.  ßΓ«¿Γ ºá»«¼¡¿Γ∞.
  1311.      èᬠóΓ«α«⌐ »α¿¼Ñα, ñáóá⌐ΓÑ ó¡ÑßѼ ¡Ñ¬«Γ«αδÑ πß«óÑαΦÑ¡ßΓ-
  1312.  ó«óá¡¿∩ ó »α«úαá¼¼π «Γδ߬᡿∩ ºáñá¡¡«⌐ ¬«¼í¿¡áµ¿¿ ß¿¼ó«½«ó
  1313.  ¿º ú½áóδ 4. àß½¿ óδ »«¼¡¿ΓÑ, ¼δ »«¼ÑßΓ¿½¿ ¿ß¬«¼πε ¬«¼í¿¡áµ¿ε
  1314.  ú½πí«¬« ó¡πΓα∞ »α«úαá¼¼δ, τΓ« «τÑó¿ñ¡« ∩ó½∩ÑΓß∩ ß«óÑαΦÑ¡¡«
  1315.  ¡Ñπñ«ó½ÑΓó«α¿Γѽ∞¡δ¼. æ½Ññπ∩ πΓ¿½¿ΓÑ GREP ß¿ßΓѼδ UNIX, ñá-
  1316.  óá⌐ΓÑ ¿º¼Ñ¡¿¼ »α«úαá¼¼π Γá¬, τΓ«íδ φΓá ¬«¼í¿¡áµ¿∩ π¬áºδóá-
  1317.  ½áß∞ ó ¬áτÑßΓóÑ »Ñαó«ú« áαúπ¼Ñ¡Γá ßΓ᫬¿.
  1318.  
  1319.   #DEFINE MAXLINE 1000
  1320.    
  1321.   MAIN(ARGC, ARGV) /* FIND PATTERN FROM FIRST ARGUMENT */
  1322.   INT ARGC;
  1323.   CHAR *ARGV[];
  1324.   \(
  1325.    CHAR LINE[MAXLINE];
  1326.    
  1327.    IF (ARGC != 2)
  1328.       PRINTF ("USAGE: FIND PATTERN\N");
  1329.    ELSE
  1330.     WHILE (GETLINE(LINE, MAXLINE) > 0)
  1331.           IF (INDEX(LINE, ARGV[1] >= 0)
  1332.               PRINTF("%S", LINE);
  1333.   \)
  1334.  
  1335.      ÆÑ»Ñα∞ ¼«ªÑΓ íδΓ∞ αáºó¿Γá «ß¡«ó¡á∩ ¼«ñѽ∞, ¿½½εßΓα¿απε-
  1336.  Θá∩ ñá½∞¡Ñ⌐ΦÑÑ ¿ß»«½∞º«óá¡¿Ñ π¬áºáΓѽÑ⌐. ÅαÑñ»«½«ª¿¼, τΓ«
  1337.  ¡á¼ ¡áñ« »αÑñπß¼«ΓαÑΓ∞ ñóá ¡Ñ«í∩ºáΓѽ∞¡δσ áαúπ¼Ñ¡Γá. Äñ¿¡
  1338.  πΓóÑαªñáÑΓ: "¡á»ÑτáΓáΓ∞ óßÑ ßΓ᫬¿ ºá ¿ß¬½ετÑ¡¿Ñ¼ ΓÑσ, ¬«Γ«-
  1339.  αδÑ ß«ñÑαªáΓ ñá¡¡πε ¬«¼í¿¡áµ¿ε", óΓ«α«⌐ ú½áß¿Γ: "»ÑαÑñ ¬áª-
  1340.  ñ«⌐ óδó«ñ¿¼«⌐ ßΓ᫬«⌐ ñ«½ªÑ¡ »ÑτáΓáΓ∞ß∩ ÑÑ ¡«¼Ñα".
  1341.      
  1342.                            - 122 -
  1343.      
  1344.      ÄíΘÑ»α¿¡∩Γδ¼ ß«ú½áΦÑ¡¿Ñ¼ ó "ß"-»α«úαá¼¼áσ ∩ó½∩ÑΓß∩ Γ«,
  1345.  τΓ« áαúπ¼Ñ¡Γ, ¡áτ¿¡áεΘ¿⌐ß∩ ß« º¡á¬á ¼¿¡πß, óó«ñ¿Γ ¡Ñ«í∩ºá-
  1346.  Γѽ∞¡δ⌐ »α¿º¡á¬ ¿½¿ »áαá¼ÑΓα. àß½¿ ¼δ, ñ½∩ Γ«ú«, τΓ«íδ ß««í-
  1347.  Θ¿Γ∞ «í ¿¡óÑαß¿¿, óδíÑαѼ -X, á ñ½∩ π¬áºá¡¿∩ « ¡π¼Ñαᵿ¿
  1348.  ¡πª¡δσ ßΓ᫬ óδíÑαѼ -N("¡«¼Ñα"), Γ« ¬«¼á¡ñá
  1349.  
  1350.   FIND -X -N THE
  1351.  
  1352.  »α¿ óσ«ñ¡δσ ñá¡¡δσ
  1353.  
  1354.   NOW IS THE TIME
  1355.   FOR ALL GOOD MEN
  1356.   TO COME TO THE AID
  1357.   OF THEIR PARTY.
  1358.  
  1359.  ä«½ª¡á óδñáΓ∞
  1360.  
  1361.   2:FOR ALL GOOD MEN
  1362.  
  1363.      ìπª¡«, τΓ«íδ ¡Ñ«í∩ºáΓѽ∞¡δÑ áαúπ¼Ñ¡Γδ ¼«ú½¿ αáß»«½áúáΓ∞-
  1364.  ß∩ ó »α«¿ºó«½∞¡«¼ »«α∩ñ¬Ñ, ¿ τΓ«íδ «ßΓá½∞¡á∩ τáßΓ∞ »α«úαá¼¼δ
  1365.  ¡Ñ ºáó¿ßÑ½á «Γ ¬«½¿τÑßΓóá Σá¬Γ¿τÑ߬¿ »α¿ßπΓßΓóπεΘ¿σ áαúπ¼Ñ¡-
  1366.  Γ«ó. ó τáßΓ¡«ßΓ¿, ó맮ó Σπ¡¬µ¿¿ INDEX ¡Ñ ñ«½ªÑ¡ ß«ñÑαªáΓ∞
  1367.  ßß佬π ¡á ARGV[2], ¬«úñá »α¿ßπΓßΓóπÑΓ «ñ¿¡ ¡Ñ«í∩ºáΓѽ∞¡δ⌐
  1368.  áαúπ¼Ñ¡Γ, ¿ ¡á ARGV[1], ¬«úñá Ñú« ¡ÑΓ. ü«½ÑÑ Γ«ú«, ñ½∩ »«½∞-
  1369.  º«óáΓѽÑ⌐ πñ«í¡«, τΓ«íδ ¡Ñ«í∩ºáΓѽ∞¡δÑ áαúπ¼Ñ¡Γδ ¼«ª¡« í佫
  1370.  «íΩÑñ¿¡¿Γ∞ ó ó¿ñÑ:
  1371.  
  1372.   FIND -NX THE
  1373.  
  1374.  ó«Γ ßá¼á »α«úαá¼¼á:
  1375.  
  1376.  
  1377.  #DEFINE MAXLINE 1000
  1378.  
  1379.  MAIN(ARGC, ARGV) /* FIND PATTERN FROM FIRST ARGUMENT */
  1380.  INT ARGC;
  1381.  CHAR *ARGV[];
  1382.  \(
  1383.   CHAR LINE[MAXLINE], *S;
  1384.   LONG LINENO = 0;
  1385.   INT EXCEPT = 0, NUMBER = 0;
  1386.   WHILE (--ARGC > 0 && (*++ARGV)[0] == '-')
  1387.      FOR (S = ARGV[0]+1; *S != '\0'; S++)
  1388.              SWITCH (*S) \(
  1389.              CASE 'X':
  1390.       EXCEPT = 1;
  1391.       BREAK;
  1392.      
  1393.                            - 123 -
  1394.      
  1395.              CASE 'N':
  1396.       NUMBER = 1;
  1397.       BREAK;
  1398.             DEFAULT:
  1399.     PRINTF("FIND: ILLEGAL OPTION %C\N", *S);
  1400.     ARGC = 0;
  1401.     BREAK;
  1402.             \)
  1403.  IF (ARGC != 1)
  1404.      PRINTF("USAGE: FIND -X -N PATTERN\N");
  1405.  ELSE
  1406.      WHILE (GETLINÑ(LINE, MAXLINE) > 0) \(
  1407.     LINENO++;
  1408.     IF ((INDEX(LINE, *ARGV) >= 0) != EXCEPT) \
  1409.         IF (NUMBER)
  1410.             PRINTF("%LD: ", LINENO);
  1411.         PRINTF("%S", LINE);
  1412.     \)
  1413.      \)
  1414. \)
  1415.  
  1416.      Çαúπ¼Ñ¡Γ ARGV πóѽ¿τ¿óáÑΓß∩ »ÑαÑñ ¬áªñδ¼ ¡Ñ«í∩ºáΓѽ∞¡δ¼
  1417.  áαúπ¼Ñ¡Γ«¼, ó Γ« óαѼ∩ ¬á¬ áαúπ¼Ñ¡Γ ARGC π¼Ñ¡∞ΦáÑΓß∩. Ñß½¿
  1418.  ¡ÑΓ «Φ¿í«¬, Γ« ó ¬«¡µÑ µ¿¬½á óѽ¿τ¿¡á ARGC ñ«½ª¡á αáó¡∩Γ∞ß∩
  1419.  1, á *ARGV ñ«½ª¡« π¬áºδóáΓ∞ ¡á ºáñá¡¡πε ¬«¼í¿¡áµ¿ε. ÄíαáΓ¿ΓÑ
  1420.  ó¡¿¼á¡¿Ñ ¡á Γ«, τΓ« *++ARGV ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ áαúπ¼Ñ¡Γ¡«⌐
  1421.  ßΓ᫬¿; (*++ARGV)[0] - ÑÑ »Ñαóδ⌐ ß¿¼ó«½. èαπú½δѠ߬«í¬¿
  1422.  ºñÑß∞ ¡Ñ«íσ«ñ¿¼δ, »«Γ«¼π τΓ« íѺ ¡¿σ óδαáªÑ¡¿Ñ íδ »α¿¡∩½«
  1423.  ß«óÑαΦÑ¡¡« «Γ½¿τ¡δ⌐ (¿ ¡Ñ»αáó¿½∞¡δ⌐) ó¿ñ *++(ARGV[0]). äαπ-
  1424.  ú«⌐ »αáó¿½∞¡«⌐ Σ«α¼«⌐ íδ½á íδ **++ARGV.
  1425.      ô»α᪡ѡ¿Ñ 5-7.
  1426.      --------------
  1427.      ìá»¿Φ¿ΓÑ »α«úαá¼¼π ADD, óδτ¿ß½∩εΘπε «íαáΓ¡«Ñ »«½∞߬«Ñ
  1428.  óδαáªÑ¡¿Ñ ¿º ¬«¼á¡ñ¡«⌐ ßΓ᫬¿. ìá»α¿¼Ñα,
  1429.  
  1430.  ADD 2 3 4 + *
  1431.  
  1432.  óδτ¿ß½∩ÑΓ 2*(3+4).
  1433.  
  1434.  
  1435.      ô»α᪡ѡ¿Ñ 5-8.
  1436.      --------------
  1437.      î«ñ¿Σ¿µ¿απ⌐ΓÑ »α«úαá¼¼δ ENTAB ¿ DETAB (π¬áºá¡¡δÑ ó ¬á-
  1438.  τÑßΓóÑ π»α᪡ѡ¿⌐ ó ú½áóÑ 1) Γá¬, τΓ«íδ «¡¿ »«½πτ὿ ß»¿ß«¬
  1439.  Γáíπ½∩µ¿«¡¡δσ «ßΓᡫ󫬠ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γ«ó. àß½¿ áαúπ¼Ñ¡-
  1440.  Γδ «ΓßπΓßΓóπεΓ, ¿ß»«½∞ºπ⌐ΓÑ ßΓá¡ñáαΓ¡πε πßΓá¡«ó¬π Γáíπ½∩µ¿⌐.
  1441.      ô»α᪡ѡ¿Ñ 5-9.
  1442.      --------------
  1443.      ÉáßΦ¿α∞ΓÑ ENTAB ¿ DETAB Γᬿ¼ «íαẫ¼, τΓ«íδ «¡¿ ó«ß»α¿-
  1444.  ¡¿¼á½¿ ß«¬αáΘÑ¡¡πε ¡«Γᵿε
  1445.      
  1446.   ENTAB M +N
  1447.      
  1448.                            - 124 -
  1449.  
  1450.  «º¡áτáεΘπε Γáíπ½∩µ¿«¡¡δÑ «ßΓᡫ󬿠τÑαѺ ¬áªñδÑ N ßΓ«½íµ«ó,
  1451.  ¡áτ¿¡á∩ ß« ßΓ«½íµá M. éδíÑα¿ΓÑ πñ«í¡«Ñ (ñ½∩ »«½∞º«óáΓѽ∩)
  1452.  »«óÑñÑ¡¿Ñ Σπ¡¬µ¿¿ »« π¼«½τá¡¿ε.
  1453.      ô»α᪡ѡ¿Ñ 5-10.
  1454.      ---------------
  1455.      ìá»¿Φ¿ΓÑ »α«úαá¼¼π ñ½∩ Σπ¡¬µ¿¿ TAIL, »ÑτáΓáεΘÑ⌐ »«ß½Ññ-
  1456.  ¡¿Ñ N ßΓ᫬ ¿º ßó«Ñú« Σá⌐½á óó«ñá. ÅπßΓ∞ »« π¼«½τá¡¿ε N αáó-
  1457.  ¡« 10, ¡« φΓ« τ¿ß½« ¼«ªÑΓ íδΓ∞ ¿º¼Ñ¡Ñ¡« ß »«¼«Θ∞ε ¡Ñ«í∩ºá-
  1458.  Γѽ∞¡«ú« áαúπ¼Ñ¡Γá, ΓᬠτΓ«
  1459.  
  1460.   TAIL -N
  1461.  
  1462.  »ÑτáΓáÑΓ »«ß½Ññ¡¿Ñ N ßΓ᫬. »α«úαá¼¼á ñ«½ª¡á ñÑ⌐ßΓó«óáΓ∞ αá-
  1463.  µ¿«¡á½∞¡«, ¬á¬¿¼¿ íδ ¡Ñαáºπ¼¡δ¼¿ ¡¿ í뫨 íδ óó«ñ ¿½¿ º¡áτÑ-
  1464.  ¡¿Ñ N. æ«ßΓáó∞ΓÑ »α«úαá¼¼π Γá¬, τΓ«íδ «¡á «»Γ¿¼á½∞¡δ¼ «íαá-
  1465.  º«¼ ¿ß»«½∞º«óá½á ñ«ßΓπ»¡πε »á¼∩Γ∞: ßΓ᫬¿ ñ«½ª¡δ σαá¡¿Γ∞ß∩,
  1466.  ¬á¬ ó Σπ¡¬µ¿¿ SORT, á ¡Ñ ó ñóπ¼Ñα¡«¼ ¼áßß¿óÑ Σ¿¬ß¿α«óá¡¡«ú«
  1467.  αẼÑαá.
  1468.  
  1469.       5.12. ô¬áºáΓѽ¿ ¡á Σπ¡¬µ¿¿
  1470.      é ∩ºδ¬Ñ "ß" ßἿ Σπ¡¬µ¿¿ ¡Ñ ∩ó½∩εΓß∩ »ÑαѼѡ¡δ¼¿, ¡«
  1471.  ¿¼ÑÑΓß∩ ó«º¼«ª¡«ßΓ∞ «»αÑñѽ¿Γ∞ π¬áºáΓѽ∞ ¡á Σπ¡¬µ¿ε, ¬«Γ«αδ⌐
  1472.  ¼«ª¡« «íαáíáΓδóáΓ∞, »ÑαÑñáóáΓ∞ ñαπú¿¼ Σπ¡¬µ¿∩¼, »«¼ÑΘáΓ∞ ó
  1473.  ¼áßß¿óδ ¿ Γ.ñ. îδ »α«¿½½εßΓα¿απѼ φΓ«, »α«óÑñ∩ ¼«ñ¿Σ¿¬áµ¿ε
  1474.  ¡á»¿ßá¡¡«⌐ αá¡ÑÑ »α«úαá¼¼δ ß«αΓ¿α«ó¬¿ Γá¬, τΓ«íδ »α¿ ºáñá¡¿¿
  1475.  ¡Ñ«í∩ºáΓѽ∞¡«ú« áαúπ¼Ñ¡Γá -N «¡á íδ ß«αΓ¿α«óá½á ßΓ᫬¿ óó«ñá
  1476.  τ¿ß½Ñ¡¡«, á ¡Ñ ½Ñ¬ß¿¬«úαáΣ¿τÑ߬¿.
  1477.      æ«αΓ¿α«ó¬á τáßΓ« ß«ßΓ«¿Γ ¿º ΓαÑσ τáßΓÑ⌐ - ßαáó¡Ñ¡¿∩, ¬«-
  1478.  Γ«α«Ñ «»αÑñѽ∩ÑΓ π»«α∩ñ«τ¿óá¡¿Ñ ½εí«⌐ »áαδ «íΩÑ¬Γ«ó, »ÑαÑß-
  1479.  Γá¡«ó¬¿, ¿º¼Ñ¡∩εΘÑ⌐ ¿σ »«α∩ñ«¬, ¿ á½ú«α¿Γ¼á ß«αΓ¿α«ó¬¿, «ßπ-
  1480.  ΘÑßΓó½∩εΘÑú« ßαáó¡Ñ¡¿∩ ¿ »ÑαÑßΓᡫ󬿠ñ« ΓÑσ »«α, »«¬á
  1481.  «íΩѬΓδ ¡Ñ αáß»«½«ªáΓß∩ ó ¡πª¡«¼ »«α∩ñ¬Ñ. Ç½ú«α¿Γ¼ ß«αΓ¿α«ó-
  1482.  ¬¿ ¡Ñ ºáó¿ß¿Γ «Γ «»Ñαᵿ⌐ ßαáó¡Ñ¡¿∩ ¿ »ÑαÑßΓá¡«ó¬¿, ΓᬠτΓ«,
  1483.  »ÑαÑñáóá∩ ó ¡Ñú« αẽ¿τ¡δÑ Σπ¡¬µ¿¿ ßαáó¡Ñ¡¿∩ ¿ »ÑαÑßΓá¡«ó¬¿,
  1484.  ¼δ ¼«ªÑ¼ «αúá¡¿º«óáΓ∞ ß«αΓ¿α«ó¬π »« αẽ¿τ¡δ¼ ¬α¿ΓÑα¿∩¼.
  1485.  ê¼Ñ¡¡« Γᬫ⌐ »«ñσ«ñ ¿ß»«½∞ºπÑΓß∩ ó ¡áΦÑ⌐ ¡«ó«⌐ »α«úαá¼¼Ñ
  1486.  ß«αΓ¿α«ó¬¿.
  1487.      èᬠ¿ »αѪñÑ, ½Ñ¬ß¿¬«úαáΣ¿τÑ߬«Ñ ßαáó¡Ñ¡¿Ñ ñóπσ ßΓ᫬
  1488.  «ßπΘÑßΓó½∩ÑΓß∩ Σπ¡¬µ¿Ñ⌐ STRCMP, á »ÑαÑßΓá¡«ó¬á Σπ¡¬µ¿Ñ⌐
  1489.  SWAP; ¡á¼ ¡πª¡á ÑΘÑ Σπ¡¬µ¿∩ NUMCMP, ßαáó¡¿óáεΘá∩ ñóÑ ßΓ᫬¿
  1490.  ¡á «ß¡«óÑ τ¿ß½Ñ¡¡«ú« º¡áτÑ¡¿∩ ¿ ó«ºóαáΘáεΘá∩ πß½«ó¡«Ñ π¬áºá-
  1491.  ¡¿Ñ Γ«ú« ªÑ ó¿ñá, τΓ« ¿ STRCMP. ¥Γ¿ Γα¿ Σπ¡¬µ¿¿ «»¿ßδóáεΓß∩
  1492.  ó MAIN ¿ π¬áºáΓѽ¿ ¡á ¡¿σ »ÑαÑñáεΓß∩ ó SORT. é ßó«ε «τÑαÑñ∞
  1493.  Σπ¡¬µ¿∩ SORT «íαáΘáÑΓß∩ ¬ φΓ¿¼ Σπ¡¬µ¿∩¼ τÑαѺ ¿σ π¬áºáΓѽ¿.
  1494.  ¼δ παѺ὿ «íαáí«Γ¬π «Φ¿í«¬ ó áαúπ¼Ñ¡Γáσ ß ΓѼ, τΓ«íδ ß«ßαÑ-
  1495.  ñ«Γ«τ¿Γ∞ß∩ ¡á ú½áó¡δσ ó«»α«ßáσ.
  1496.             
  1497.                            - 125 -
  1498.      
  1499.   #DEFINE LINES 100 /* MAX NUMBER OF LINES
  1500.          TO BE SORTED */
  1501.    
  1502.   MAIN(ARGC, ARGV) /* SORT INPUT LINES */
  1503.   INT ARGC;
  1504.   CHAR *ARGV[];
  1505.   \(
  1506.    CHAR *LINEPTR[LINES]; /* POINTERS TO TEXT LINES */
  1507.    INT NLINES; /* NUMBER OF INPUT LINES READ */
  1508.    INT STRCMP(), NUMCMP(); /* COMPARSION FUNCTIONS */
  1509.    INT SWAP(); /* EXCHANGE FUNCTION */
  1510.    INT NUMERIC = 0; /* 1 IF NUMERIC SORT */
  1511.    
  1512.    IF(ARGC>1 && ARGV[1][0] == '-' && ARGV[1][1]=='N')
  1513.       NUMERIC = 1;
  1514.    IF(NLINES = READLINES(LINEPTR, LINES)) >= 0) \(
  1515.       IF (NUMERIC)
  1516.             SORT(LINEPTR, NLINES, NUMCMP, SWAP);
  1517.       ELSE
  1518.             SORT(LINEPTR, NLINES, STRCMP, SWAP);
  1519.       WRITELINES(LINEPTR, NLINES);
  1520.    \) ELSE
  1521.       PRINTF("INPUT TOO BIG TO SORT\N");
  1522.   \)
  1523.    
  1524.  
  1525.  çñÑß∞ STRCMP, NIMCMP ¿ SWAP - áñαÑßá Σπ¡¬µ¿⌐; Γᬠ¬á¬ ¿ºóÑß-
  1526.  Γ¡«, τΓ« φΓ« Σπ¡¬µ¿¿, «»Ñαᵿ∩ & ºñÑß∞ ¡Ñ ¡πª¡á ß«óÑαΦÑ¡¡«
  1527.  á¡á½«ú¿τ¡« Γ«¼π, ¬á¬ «¡á ¡Ñ ¡πª¡á ¿ »ÑαÑñ ¿¼Ñ¡Ñ¼ ¼áßß¿óá.
  1528.  ÅÑαÑñáτá áñαÑß«ó Σπ¡¬µ¿⌐ «αúá¡¿ºπÑΓß∩ ¬«¼»¿½∩Γ«α«¼.
  1529.      éΓ«α«⌐ Φáú ß«ßΓ«¿Γ ó ¼«ñ¿Σ¿¬áµ¿¿ SORT:
  1530.  
  1531.   SORT(V, N, COMP, EXCH) /* SORT STRINGS V[0] ... V[N-1] */
  1532.   CHAR *V[];           /* INTO INCREASING ORDER */
  1533.   INT N;
  1534.   INT (*COMP)(), (*EXCH)();
  1535.   \(
  1536.    INT GAP, I, J;
  1537.    
  1538.    FOR(GAP = N/2; GAP > 0; GAP /= 2)
  1539.        FOR(I = GAP; I < N; I++)
  1540.       FOR(J = I-GAP; J >= 0; J -= GAP) \(
  1541.           IF((*COMP)(V[J], V[J+GAP]) <= 0)
  1542.               BREAK;
  1543.           (*EXCH)(&V[J], &V[J+GAP]);
  1544.       \)
  1545.   \)        
  1546.                            - 126 -
  1547.    
  1548.  
  1549.      çñÑß∞ ß½ÑñπÑΓ «íαáΓ¿Γ∞ «»αÑñѽѡ¡«Ñ ó¡¿¼á¡¿Ñ ¡á «»¿ßá-
  1550.  ¡¿∩. Ä»¿ßá¡¿Ñ
  1551.  
  1552.   INT (*COMP)()
  1553.  
  1554.  ú«ó«α¿Γ, τΓ« COMP ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á Σπ¡¬µ¿ε, ¬«Γ«αá∩
  1555.  ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ Γ¿»á INT. ÅÑαóδÑ ¬απú½δѠ߬«í¬¿ ºñÑß∞
  1556.  ¡Ñ«íσ«ñ¿¼δ; íѺ ¡¿σ «»¿ßá¡¿Ñ
  1557.  
  1558.   INT *COMP()
  1559.  
  1560.  ú«ó«α¿½« íδ, τΓ« COMP ∩ó½∩ÑΓß∩ Σπ¡¬µ¿Ñ⌐, ó«ºóαáΘáεΘÑ⌐ π¬áºá-
  1561.  Γѽ∞ ¡á µÑ½δÑ, τΓ«, ¬«¡Ñτ¡«, ß«óÑαΦÑ¡¡« ñαπúá∩ óÑΘ∞.
  1562.      êß»«½∞º«óá¡¿Ñ COMP ó ßΓ᫬Ñ
  1563.  
  1564.   IF (*COMP)(V[J], V[J+GAP]) <= 0)
  1565.  
  1566.  »«½¡«ßΓ∞ε ß«ú½áßπÑΓß∩ ß «»¿ß᡿Ѽ: COMP - π¬áºáΓѽ∞ ¡á Σπ¡¬-
  1567.  µ¿ε, *COMP - ßá¼á Σπ¡¬µ¿∩, á
  1568.  
  1569.    (*COMP)(V[J], V[J+GAP])
  1570.  
  1571.  - «íαáΘÑ¡¿Ñ ¬ ¡Ñ⌐. èαπú½δѠ߬«í¬¿ ¡Ñ«íσ«ñ¿¼δ ñ½∩ »αáó¿½∞¡«ú«
  1572.  «íΩÑñ¿¡Ñ¡¿∩ ¬«¼»«¡Ñ¡Γ«ó.
  1573.      îδ πªÑ »α¿ó«ñ¿½¿ Σπ¡¬µ¿ε STRCMP, ßαáó¡¿óáεΘπε ñóÑ ßΓ᫬¿
  1574.  »« »Ñαó«¼π τ¿ß½Ñ¡¡«¼π º¡áτÑ¡¿ε:
  1575.  
  1576.  NUMCMP(S1, S2) /* COMPARE S1 AND S2 NUMERICALLY */
  1577.  CHAR *S1, *S2;
  1578.  \(
  1579.   DOUBLE ATOF(), V1, V2;
  1580.  
  1581.   V1 = ATOF(S1);
  1582.   V2 = ATOF(S2);
  1583.   IF(V1 < V2)
  1584.      RETURN(-1);
  1585.   ELSE IF(V1 > V2)
  1586.      RETURN(1);
  1587.   ELSE
  1588.      RETURN (0);
  1589.  \)
  1590.  
  1591.  
  1592.      çᬽετ¿Γѽ∞¡δ⌐ Φáú ß«ßΓ«¿Γ ó ñ«íáó½Ñ¡¿¿ Σπ¡¬µ¿¿ SWAP,
  1593.  »ÑαÑßΓáó½∩εΘÑ⌐ ñóá π¬áºáΓѽ∩. ¥Γ« ½Ñú¬« ßñѽáΓ∞, ¡Ñ»«ßαÑñßΓ-
  1594.  óÑ¡¡« ¿ß»«½∞ºπ∩ Γ«, τΓ« ¼δ ¿º½«ª¿½¿ αá¡ÑÑ ó φΓ«⌐ ú½áóÑ.
  1595.             
  1596.                            - 127 -
  1597.      
  1598.  SWAP(PX, PY) /* INTERCHANGE *PX AND *PY */
  1599.  CHAR *PX[], *PY[];
  1600.  \(
  1601.   CHAR *TEMP;
  1602.  
  1603.   TEMP = *PX;
  1604.   *PX = *PY;
  1605.   *PY = TEMP;
  1606.  \)
  1607.      ê¼ÑÑΓß∩ ¼¡«ªÑßΓó« ñαπú¿σ ¡Ñ«í∩º∩Γѽ∞¡δσ áαúπ¼Ñ¡Γ«ó, ¬«-
  1608.  Γ«αδÑ ¼«úπΓ íδΓ∞ ó¬½ετÑ¡δ ó »α«úαá¼¼π ß«αΓ¿α«ó¬¿: ¡Ñ¬«Γ«αδÑ
  1609.  ¿º ¡¿σ ß«ßΓáó½∩εΓ ¿¡ΓÑαÑß¡δÑ π»α᪡ѡ¿∩.
  1610.      ô»α᪡ѡ¿Ñ 5-11.
  1611.      ---------------
  1612.      î«ñ¿Σ¿µ¿απ⌐ΓÑ SORT Γᬿ¼ «íαẫ¼, τΓ«íδ «¡á αáí«Γá½á ß
  1613.  ¼ÑΓ¬«⌐ -R, π¬áºδóáεΘÑ⌐ ¡á ß«αΓ¿α«ó¬π ó «íαáΓ¡«¼ (πíδóáεΘѼ)
  1614.  »«α∩ñ¬Ñ. è«¡Ñτ¡«, -R ñ«½ª¡á αáí«ΓáΓ∞ ß -N.
  1615.      ô»α᪡ѡ¿Ñ 5-12.
  1616.      ---------------
  1617.      ä«íáó∞ΓÑ ¡Ñ«í∩ºáΓѽ∞¡δ⌐ áαúπ¼Ñ¡Γ -F, «íΩÑñ¿¡∩εΘ¿⌐ ó¼ÑßΓÑ
  1618.  »α«»¿ß¡δÑ ¿ ßΓα«τ¡δÑ íπ¬óδ, ΓᬠτΓ«íδ αẽ¿τ¿Ñ αÑú¿ßΓα«ó ¡Ñ
  1619.  πτ¿ΓδóὫß∞ ó« óαѼ∩ ß«αΓ¿α«ó¬¿: ñá¡¡δÑ ¿º óÑασ¡Ñú« ¿ ¡¿ª¡Ñ-
  1620.  ú« αÑú¿ßΓα«ó ß«αΓ¿απεΓß∩ ó¼ÑßΓÑ, ΓᬠτΓ« íπ¬óá 'á' »α«»¿ß¡«Ñ
  1621.  ¿ 'á' ßΓα«τ¡«Ñ «¬áºδóáεΓß∩ ß«ßÑñ¡¿¼¿ , á ¡Ñ αáºñѽѡ¡δ¼¿ µÑ-
  1622.  ½δ¼ á½Σáó¿Γ«¼.
  1623.      ô»α᪡ѡ¿Ñ 5-13.
  1624.      ---------------
  1625.      ä«íáó∞ΓÑ ¡Ñ«í∩ºáΓѽ∞¡δ⌐ áαúπ¼Ñ¡Γ -D ("ß½«óáα¡«Ñ π»«α∩ñ«-
  1626.  τ¿óá¡¿Ñ"), »α¿ ¡á½¿τ¿¿ ¬«Γ«α«ú« ßαáó¡¿óáεΓß∩ Γ«½∞¬« íπ¬óδ,
  1627.  τ¿ß½á ¿ »α«íѽδ. Å«ºáí«Γ∞ΓÑß∞ « Γ«¼, τΓ«íδ φΓá Σπ¡¬µ¿∩ αáí«-
  1628.  Γá½á ¿ ó¼ÑßΓÑ ß -F.
  1629.      ô»α᪡ѡ¿Ñ 5-14.
  1630.      ---------------
  1631.      ä«íáó∞ΓѠ󫺼«ª¡«ßΓ∞ «íαáí«Γ¬¿ »«½Ñ⌐, ΓᬠτΓ«íδ ¼«ª¡«
  1632.  í佫 ß«αΓ¿α«óáΓ∞ »«½∩ ó¡πΓα¿ ßΓ᫬. èáªñ«Ñ »«½Ñ ñ«½ª¡« ß«α-
  1633.  Γ¿α«óáΓ∞ß∩ ó ß««ΓóÑΓßΓó¿¿ ß ¡Ñºáó¿ß¿¼δ¼ ¡áí«α«¼ ¡Ñ«í∩ºáΓѽ∞-
  1634.  ¡δσ áαúπ¼Ñ¡Γ«ó. (»αÑñ¼ÑΓ¡δ⌐ π¬áºáΓѽ∞ φΓ«⌐ ¬¡¿ú¿ ß«αΓ¿α«óá½-
  1635.  ß∩ ß »«¼«Θ∞ε áαúπ¼Ñ¡Γ«ó -DF ñ½∩ ¬áΓÑú«α¿¿ π¬áºáΓѽ∩ ¿ ß -N
  1636.  ñ½∩ ¡«¼Ñα«ó ßΓαá¡¿µ).
  1637.