** ²Ä¤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!(¥un¥[¤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¤Î¦óºØ±¡ªpnµ²§ôµ{¦¡
µ{¦¡½Ð¥Î 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 ȬOt¼Æ¤~°±!
µ{¦¡¥²¶·¥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¬Ot¼Æ´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¥un§ï³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> **********************/