2010年10月14日 星期四

作業二:數字排列

作業目的

程式邏輯與方法運用

作業內容

本作業在製作二個靜態方法,一個叫做SortData ,無傳回值,傳入為一個ref 整數,輸出時將輸入參數進行排序, 排序方式是將傳入整數的每個數字重新由大排到小,例如傳入參數2303998,輸出時參數就變成9983320。
另一個靜態方法,叫做Add2Sort,傳回一個整數值,傳入兩個整數, 傳回的值是將兩個傳入整數分別經過SortData方法排序後, 進行相加,相加的和經過SortData處理後,再傳回來。

輸出入格式

輸入每一行為一個題目,輸入為兩個整數a,b,a和b均小於230,並以空白相隔。
輸出時每個問題輸出一個整數。

範例

Input:
23110 123
808 303
Output:
43321
2110

小考一:宿營

小考一(A)

小明從營地出發,以每小時3.5公里速度向東北走了2小時,然後又向東走了x小時,請計算出小明距離營地的距離。

小考一(B)

小明從營地出發,以每小時3.5公里速度向東走了x小時,然後又向東南走了2小時,請計算出小明距離營地的距離。

輸出輸入

輸入:為一個小數。
輸出:也是一個小數。

作業一:咖啡促銷

作業目的

選擇邏輯練習

作業內容

一、某便利商店進行咖啡促銷活動,促銷咖啡有兩種,一個美式咖啡、一個拿鐵,活動內容如下:
  • 買二杯中美式咖啡,可以有一杯免費小美式咖啡。
  • 買二杯大美式咖啡,可以有一杯免費中美式咖啡。
  • 買二杯中拿鐵,可以有一杯免費小拿鐵或小美式咖啡,以小拿鐵優先免費。
  • 買二杯大拿鐵,可以有一杯免費中拿鐵或中美式咖啡,以中拿鐵優先免費。
  • 拿鐵大、中、小售價分別為50、40、30元。
  • 美式咖啡大、中、小售價分別為45、35、25元。
二、請寫一個程式,計算購買咖啡的總價

輸出與輸入

一、輸入每一行為一筆測試資料,共有六個大於零的整數值,以空白相隔, 分別代表大拿鐵、中拿鐵、小拿鐵、大美式、中美式、小美式的 數量。
二、每行輸出有一個整數輸出,代表總售價。

範例

Input:
0 0 0 0 0 1
1 2 3 4 5 6
2 0 0 3 2 1
0 0 2 0 2 2
0 5 0 2 0 1
Output:
25
600
260
155
290

2010年10月7日 星期四

小考一:溫度類別的設計

設計一個類別Temperature,內有一個公用欄位,為度量單位Unit,代表攝氏或華氏。另外有一個公用屬性為溫度值Degree,負責存取私用欄位degree。degree儲存的值是攝氏的值。當存取Degree值,以Unit來判斷應該設定/讀取攝氏的度數、或華氏的度數。

建立二個建構子,一個有一個參數、一個有兩個參數。

一個參數時,輸入為度數,用來設定degree,Unit預設為攝氏。

二個參數時,輸入為度數與度量單位,用來設定Degree,與Unit。

Main主程式內容如下,以測試類別Temperature的正確性。

Temperature t1 = new Temperature(30);
Temperature t2 = new Temperature(“F”, 50);
t1.Unit = “F”;
Console.WriteLine(t1.Degree);
Console.WriteLine(t2.Degree);
t2.Unit = “C”;
Console.WriteLine(t2.Degree);

華氏與攝氏溫度轉換公式為:華氏溫度=(攝氏溫度×9)÷5+32

2010年10月2日 星期六

如何紀錄宣告物件的數量

在許多程式設計實例中,經常需要知道某特定類別在目前已經宣告了多少物件,這時就需要宣告一個靜態(static)的欄位來記錄宣告物件的總數,當物件呼叫建構子(constructor)建立新的執行個體時,將這個紀錄值累加就行了。例如下列的C#程式碼範例
    class Point
    {
        public int x, y;
        private static int pointCount = 0;
        public Point()
        {
            pointCount++;
        }
        public Point(int x, int y)
            : this()
        {
            this.x = x; this.y = y;
        }
    }

這個範例有兩個建構子,第一個無參數建構子在呼叫時會將pointCount累加;第二個兩參數建構子呼叫this(),表示在執行該建構子區塊前,會先呼叫無參數建構子,也就會累加pointCount,這種方式就可以紀錄以建構子建立執行個體的次數。

說明與建議

  • 這僅能從類別中知道物件數量,並無法知道各個物件的內容。
  • 為避免pointCount被意外覆寫,宣告為private,若需讀取此值,可另建方法傳回此值。
  • 當某些物件不再使用時,可覆寫物件的Finalize()方法,並將pointCount累減。
  • 當物件設定為null時,pointCount不會自行累減。若要將pointCount累減,必須將pointCount宣告為屬性,即可在set區塊中,判斷value為null時,將pointCount累減。