Incremental Method

「遞增法」是符合電腦運作特性的方法。電腦執行程式,一次只做一個動作,完成了一件事才做下一件事。當一個問題太大太多時,化整為零、一個一個解決吧!

合抱之木,生於毫末;九層之臺,起於累土;千里之行,始於足下。謹以此句與大家共勉。

 

 

範例:加總數字

無論電腦再怎麼強,還是得一個一個累加數字。

 
  1. void summation()
  2. {
  3.     int array[5] = {3, 6, 9, -8, 1};
  4.  
  5.     int sum = 0;
  6.     for (int i=0; i<5; i++)
  7.         sum += array[i];
  8.  
  9.     cout << "總和是" << sum;
  10. }
 
  1. int summation(int array[], int n)
  2. {
  3.     int sum = 0;
  4.     for (int i=0; i<n; i++)
  5.         sum += array[i];
  6.     return sum;
  7. }

範例:複製字串

無論電腦再怎麼強,還是得逐字複製。

 
  1. void copy()
  2. {
  3.     char s[15] = "incremental";
  4.     char t[15];
  5.  
  6.     int i;
  7.     for (i=0; s[i] != '\0'; i++)
  8.         t[i] = s[i];
  9.     t[i] = '\0';
  10.  
  11.     cout << "原本字串" << s;
  12.     cout << "複製之後的字串" << t;
  13. }
 
  1. void copy(char* s, char* t)
  2. {
  3.     int i;
  4.     for (i=0; s[i]; i++)
  5.         t[i] = s[i];
  6.     t[i] = '\0';
  7. }

範例:選擇排序法( Selection Sort )

找到第一小的數字,放在第一個位置;再找到第二小的數字,放在第二個位置。一次找一個數字,如此下去就會把所有數字按照順序排好了。

 
  1. void selection_sort()
  2. {
  3.     int array[5] = {3, 6, 9, -8, 1};
  4.  
  5.     for (int i=0; i<5; i++)
  6.     {
  7.         // 從尚未排序的數字當中,找到第i小的數字。
  8.         int min_index = i;
  9.         for (int j=i+1; j<5; j++)
  10.             if (array[j] < array[min_index])
  11.                 min_index = j;
  12.  
  13.         // 把第i小的數字,放在第i個位置。
  14.         swap(array[i], array[min_index]);
  15.     }
  16.  
  17.     // 印出排序結果。
  18.     for (int i=0; i<5; i++)
  19.         cout << array[i];
  20. }
 
  1. void selection_sort(int array[], int n)
  2. {
  3.     for (int i=0; i<n; i++)
  4.     {
  5.         // 從尚未排序的數字當中,找到第i小的數字。
  6.         int min_index = i;
  7.         for (int j=i+1; j<n; j++)
  8.             if (array[j] < array[min_index])
  9.                 min_index = j;
  10.  
  11.         // 把第i小的數字,放在第i個位置。
  12.         swap(array[i], array[min_index]);
  13.     }
  14. }

範例:印出直角三角形

多字成行,多行成直角三角形。由細微的東西開始,一件一件組起來。

 
  1. // 多字成行
  2. void print_line(int n)  // n 是一行的長度
  3. {
  4.     for (int i=1; i<=n; i++) cout << '@';
  5.     cout << '\n';
  6. }
  7.  
  8. // 多行成直角三角形
  9. void print_triangle(int n)  // n 是行數
  10. {
  11.     for (int i=n; i>=1; i--) print_line(i);
  12. }
posted @ 2017-02-20 20:05  不思蜀  阅读(172)  评论(0编辑  收藏  举报