2010年11月6日 星期六

作業一:簡易訂單作業(解題)

C#語言中的欄位和屬性經常不容易學通,這個題目也是希望能提供一個練習製作屬性的機會。 設計Price屬性時需要根據是否含稅來決定取得的售價Price。

計算單筆訂單價格時,只要呼叫Order的物件方法,例如o.CalcPrice(),即可獲得訂單價格, 題解的C#程式碼中,關於Product與Order類別的設計如下:

struct Product
{
    public string Name;
    public bool Taxable;
    public double Price
    {
        set { price = value; }
        get
        {
            if (Taxable)
                return price * 1.05;
            else
                return price;
        }
    }
    double price;
}
class Order
{
    public Product[] ProductList;
    public int[] AmountList;
    protected int x;
    public static int OrderCount = 0;
    public Order(int n)
    {
        ProductList = new Product[n];
        AmountList = new int[n];
        OrderCount++;
    }
    public static double CalcTotalPrice(Order[] ol)
    {
        double sum = 0;
        foreach (Order o in ol)
        {
            sum += o.CalcPrice();
        }
        if (sum <= 5000)
            return sum;
        else
            return (int)sum /100 * 100;
    }
    public double CalcPrice()
    {
        double sum = 0;
        for (int i=0;i<ProductList.Length;i++)
        {
            if (AmountList[i]<10)
                sum += ProductList[i].Price * AmountList[i];
            else if (AmountList[i]>=10 && AmountList[i]<25)
                sum += ProductList[i].Price * AmountList[i] * 0.9;
            else
                sum += ProductList[i].Price * AmountList[i] * 0.8;
        }
        return sum;
    }
}

小考二:公式計算(解題)

這兩個題目都在應用for迴圈,在執行n次循環時,進行累加的工作。

小考二(A)

在for迴圈中以i為計數器,並使用奇偶數判斷加或減。 C#程式碼解題重點如下
    if (i % 2 == 0) 
        sum -=  Math.Sin(i) / (Math.PI * i);
    else 
        sum += Math.Cos(i) / (Math.PI * i);

小考二(B)

這題在for迴圈中以i為計數器,C#程式碼解題重點如下
sum += Math.Pow(i, -3) + Math.Sin(i / (2 * Math.PI));

作業二:數字解謎(解題)

這個題目主要是能夠將每一個位數值相加,下列C#程式碼由蔡宥安 提供,就是將原數除以10,在加上個位數。
int m = i;
while (m >= 10)
{
    m = m % 10 + m / 10;
}

小考二:ArrayList物件處理

小考二:ArrayList物件處理

  1. 建立一個Car類別,內有三個公用欄位,車主姓名Owner、廠牌Brand和年份Year。
  2. 設計一個靜態方法,頭部為
  3. static void RemoveByName(ArrayList alist, string name)
    實作此一方法,用以刪除alist中車主名字為name的Car物件。
  4. 另外,在主程式中自行新建四個Car物件,並宣告一個ArrayList變數,命名為CarList。並呼叫RemoveByName以成功刪除一筆資料。

作業二:數字解謎

作業內容

一、本次作業主要內容在進行數值計算,將一個數字的位數值進行加總, 若加總後的數字大於10,則再進行位數值加總,直到剩下個位數n, 將原來的數字乘上2,再除以3,重複n次的整數運算,得到m
二、例如計算47,4+7得11,1+1得n為2,所以將47*2/3*2/3(進行二次*2/3計算),得m為20。

輸出與輸入

一、輸入每一行為一筆測試資料,每一行有兩個整數a和b,且a<=b,計算a與b之間的每個數字的m值(包含a與b)。
二、每行輸出有一個整數輸出,列印出a和b之間(包含a與b)最大的m值。

範例

Input:
47 50
123456 123465
123456789 123456879
Output:
20
82308
82304580

小考二:公式計算

小考二(A)

輸入一個整數n,計算下列公式值
輸出入範例
Input
22
Output
0.000990063958331312

小考二(B)

輸入一個整數n,計算下列公式值
輸出入範例
Input
22
Output
13.1633367828221