LAB-05 @ 5-th week Ä~Äò¬ã¨s Loop + Array (p.1/2)
** ²Ä¤T¶gªºÂ²³æ²Î­pÁÙ¨S§Ë¼ôªº½Ð°È¥²­n§ä¤p§U±Ð©Î§ä¦P¾ÇÀ°¦£§A§Ë¼ô
** ²Ä¥|¶gªº Pascal Triangle ÁÙ¤£·|ªº½ÐÄ~Äò½m²ß, 
   ¦pªG¤w¸g·|¥Î two-dimensional array ³B²zªº, 
   ¥i¥H¥ý½m²ß¦L¦¨¥¿¤T¨¤§Îªº¼Ë¤l!(¥u­n¥[¤J¤@¦C if ¥y¤l´N¥i¥H!!) 
   µM«á, ¦A¸ÕµÛ§ï¥Î one-dimensional array ½m²ß
  (Hint: ¤¤¶¡¦U¤¸¯À­n¥Ñ¥k¦Ó¥ª³B²z! ¨ä¹ê«Ü²³æ:)

*** ¥»¶gªº½m²ß¦³¨âÃD, ¸ê¤u¨tªº¨âÃD³£­n°µ!
	«D¸ê¤u¨tªº½ÐºÉ§A¥i¯à, ¥i¥H°µ¦h¤Ö´N°µ¦h¤Ö ƒº 

Problem 5a: ¼g¤@­Óµ{¦¡, Ū¤J¨â¾ã¼Æ m »P n, 
    ¦L¥X m ­Óª«¥ó¤¤¿ï¨ú n ­Óª«¥ó·|¦³´XºØ¿ïªk, §Y C(m, n)
    ¤wª¾ 0 <= m, n <= 100; ¥B¥u¦Ò¼{­n°Ýªºµª®×¥i¥Î long ªí¥Ü§Y¥i; 
    ªü´N¬O¤£¥²¦Ò¼{³B²z¤j¼Æ(Big number)°Õ!
Purpose: ½m²ß«ä¦Ò¸ÑÃD¤èªk! 
         ¦¹ÃD¨ä¹ê¬O Pascal Triangle ÅܤÆÃD!!
Description: ¦Û¤v¨M©w¿é¤J¤èªk¥H¤Î¦óºØ±¡ªp­nµ²§ôµ{¦¡
      µ{¦¡½Ð¥Î long ÅܼƧY¥i, ¤£¥²¦Ò¼{ overflow ªº°ÝÃD !
Hint: ¥Î Pascal Triangle, ¤£­n¸Õ¹Ï¥hºâ m ¶¥­¼»P n ¶¥­¼ !
      C(m, n) ªºµª®×¦b m ¶¥ Pascal Triangle ªº²Ä m ¦C²Ä n ®æ¤¤!

Problem 5b: ¼g¤@­Óµ{¦¡, Ū¤J¾ã¼Æ n,  (¦Ò¼{ 3 <= n <= 19 §Y¥i,)
	µM«á¦L¥X n ¶¥Å]¤è°} (Magic Square of order n)
Purpose: §ó¶i¤@¨B½m²ß  Array °t¦X  Loop ªº³B²z, 
      ¤×¨ä¬O¥|ªº­¿¼Æ¶¥Å]¤è°}¤¤¦p¦ó§PÂ_¸Ó®æ¤l¬O§_¦b©Ò¿×ªº¹ï¨¤½u¤W??
Description: µ{¦¡­n¤@ª½³B²z¨ì¿é¤Jªº n  ­È¬O­t¼Æ¤~°±! 
       µ{¦¡¥²¶·¥i¥H³B²z©_¼Æ¶¥Å]¤è°}¥H¤Î¥|ªº­¿¼Æ¶¥Å]¤è°}; 
       ­Y¥i¥H³B²z©Ò¦³°¸¼Æ(2°£¥~)¶¥§ó¦nƒº:-) 

Hint: ½Ð¥Î©Òµ¹½d¨Ò p50.c ­×§ï§Y¥i
 
D:\testc> linenum < p50.c  
   01 //p50.c  --- ¦p¤§«e¦U½d¨Ò, ­n¥Î¥ß©e¤uµ{Âà¥]·§©À: ¥t¼gfunction°µ¿é¤J !
   02 // ½Ð®³³o­Ó¥h§ï, ¼g¤J¾Ç¸¹©m¦W, ¨Ã¥Bµù©ú³Ì«á­×§ï®É¶¡
   03 // we wrote a ¥iŪ¤Jlong¾ã¼Æªº¨ç¼Æ(function) long getLong( );
   04 //  µM«á¨C¦¸­nŪ¨ú¤@­Ó¾ã¼Æ´N ¡§¥s¡¨ (Call) ¥¦À°¦£°µ !
   05 // ½Ð¬G·N¿é¤J 2 ©Î 38 ¬Ý¬Ý·|«ç¼Ë?
   06 /// ¾Ç¸¹:           ©m¦W:
   07 /// Last modified date and time:  
   08 /// Original creation date and time:  2010/10/11 16:15
   09 ////////////
   10 #include <stdio.h>
   11 #include <stdlib.h>
   12 #define N_MAX 19
   13 int n;  // ª`·N³o n ¬O int, ¥H«e¬O¥Î long, ²{¦b¬G·N§ï¥Î int
   14   //  (ª`·N)  atol( ), atoi( ),  ¥H¤Î atof( ) ³£«Å§i¦b <stdlib.h>
   15 long getLong(void);  // ¥ý«Å§i(Án©ú)·|¼g¤@­Ó getLong( ) function ƒº
 
LAB-05 @ 5-th week  Ä~Äò¬ã¨s Loop + Array          (p.2/2)

   16 void magOdd(int);  // for ©_¼Æ¶¥ Magic Square
   17 void mag4k(int); // for order = 4k where k = 1, 2, 3, ... 
   18 void ggyy(int n) {
   19     printf("Sorry, can NOT process order n = %d\n", n);
   20     printf(" Please try order = 3.. %d\n", N_MAX);
   21 }
   22 int main(  ) {   // ¤j¦h¼Æ main program ³£³o¼Ë¶}ÀY
   23      for( ;; ) {   //   (ª`·N) Loop forever
   24          printf("Magic Square of order n, Give me n: ");
   25          n = (int)getLong(  );  // ¼g¦¨¨ç¼Æ(function;¨ç¦¡)¬O«Ü¦nªº²ßºD
   26          if(feof(stdin)) n = -1;  // force to terminate if EOF
   27          if(n == 0) n = 4;  // default order = 4 for fun :-)
   28          if( n < 0 ) break;    //  ­Y¬O­t¼Æ´N°± ! ª`·N¥i§ï¥Î§Oªº¤èªk
   29          if((n < 3) || (n > N_MAX) ) {   // n ¤£²Å¦X³W©w !
   30              ggyy(n);
   31              continue;  // will goto top of the Loop, §Y for(;;)
   32          }
   33          if( (n%2) == 1) magOdd(n);  // ©_¼Æ¶¥ 
   34          else if( (n%4) == 0) mag4k(n);  // order = 4k where k=1,2,...
   35          else {
   36             ggyy(n);   // ·Q¤@·Q, why ¦¹³B¤£»Ý¥Î continue; ???
   37          }
   38          //  (ª`·N) ¥i¥H°Ý user ­n¤£­nÄ~Äò?
   39      } // while  
   40      printf("Bye bye!\nHit RETURN key ..."); 
   41      getchar( );  // ¥ø¹ÏŪ¨ú¤@­Ó char, Åýµ{¦¡°±µÛµ¥ User «ö RETURN Áä
   42      return  0;    //   §iª¾§@·~¨t²Î(OS)ªí¥Ü§Ú­Ì³o¥Dµ{¦¡¥¿±`µ²§ô
   43 }// main(
   44 long getLong( ) {     // ¥H«á­n§ï¿é¤Jªº¤èªk¥u­n§ï³o function ´N¥i :-)
   45     static char buf[99];   // a string buffer for input;  why "static" ?
   46     double ans;
   47     fgets(buf, sizeof(buf), stdin);   // stdin ´N¬OÁä½L, ­n°O±o§t¤J <stdio.h>
   48     ans = atol(buf);    // ±q¦r¦ê¤¤Åª¥X long ¾ã¼Æ (long)
   49          ////// ­Y¬O¹ê¼Æ´N§â atol §ï¬° atof  ³o¤]¬O§O¤H¼g¦nªº¨ç¼Æ(¨ç¦¡)
   50     return ans;
   51 }
   52 int x[N_MAX][N_MAX];   // ¼g¦b³o ¥Dµ{¦¡ main( ) ¬Ý¤£¨ì :-)
   53 int i, j, k;  // µ¹¥H¤U functions ¥Î©ó  Loop ±±¨îÅÜ¼Æ :-)
   54     //.. ·íµM¤]¥i¥H¦b functions ¤º¦Û¤v¥t¥~©w¸qÅÜ¼Æ 
   55 void magOdd(int n) {   // ¥i¥H¥Î¤W­±ªº int x[ ] [ ]
   56     printf("Magic square of ORDer = %d\n", n);
   57 
   58 }// magOdd(
   59  /// /////////
   60 void mag4k(int n) {     // ¥i¥H¥Î¤W­±ªº int x[ ] [ ]
   61     printf("Magic square of order = %d\n", n);
   62 
   63 }// mag4k(  
   64 /******
   65 D:\testc>path c:\Dev-Cpp\bin;%path%
   66 D:\testc>gcc p50.c
   67 D:\testc>a
   68 Magic Square of order n, Give me n: 2
   69 Sorry, can NOT process order n = 2
   70  Please try order = 3.. 19
   71 Magic Square of order n, Give me n: 38
   72 Sorry, can NOT process order n = 38
   73  Please try order = 3.. 19
   74 Magic Square of order n, Give me n: 5
   75 Magic square of ORDer = 5
   76 Magic Square of order n, Give me n: 4
   77 Magic square of order = 4
   78 Magic Square of order n, Give me n: -1
   79 Bye bye!
   80 Hit RETURN key ...
   81 
   82 D:\testc>     **********************/