using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mid103_2
{
class Complex
{
private double real;
private double imag;
//建構子
public Complex(double real, double imag)
{
this.real = real;
this.imag = imag;
}
//Property
public double Real
{
get { return real; }
set { real = value; }
}
public double Imag
{
get { return imag; }
set { imag = value; }
}
//物件方法
public double Magnitude()
{
return Math.Sqrt(real*real+imag*imag);
} //計算複數的絕對值大小
//類別方法
public static Complex Reciprocal(Complex num)
{
Complex result = new Complex(0, 0);
if (num.Magnitude() == 0)
return null;
result.Real = 1 / (num.real*num.real+num.imag*num.imag) * num.Real;
result.Imag = -1 / (num.real*num.real+num.imag*num.imag) * num.Imag;
return result;
} //倒數
public static Complex Multiply(Complex num1,Complex num2)
{
Complex result = new Complex(0, 0);
result.Real = num1.Real*num2.Real-num1.Imag*num2.Imag;
result.Imag = num1.Real*num2.Imag+num1.Imag*num2.Real;
return result;
} //複數相乘
public static Complex Power(Complex num,int exp)
{
Complex result = new Complex(1, 0);
if (exp == 0)
return result;
for (int i = 0; i < exp; i++)
{
result = Multiply(result, num);
}
return result;
} //複數的次方
//改寫
public override string ToString()
{
if (Imag==0)
return string.Format("{0:0.####}", Real);
else if (Real==0)
return string.Format("{0:0.####}i", Imag);
else
return string.Format("{0:0.####}{1}{2:0.####}i",Real,(Imag > 0 ? '+' : '-'),Math.Abs(Imag));
} //列印複數
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mid103_2
{
class Program
{
static void Main(string[] args)
{
Complex num1, num2;
double real, imag;
Console.WriteLine("請輸入複數的實部");
real=double.Parse(Console.ReadLine());
Console.WriteLine("請輸入複數的虛部");
imag = double.Parse(Console.ReadLine());
num1 = new Complex(real, imag);
Console.WriteLine("{0} 的絕對值 = {1:0.####}",num1.ToString(),num1.Magnitude());
num2 = Complex.Reciprocal(num1);
Console.WriteLine("{0} 的倒數 = {1}", num1.ToString(), num2.ToString());
for (int i=0;i<=5;i++)
Console.WriteLine("({0})^{1}={2}",num1.ToString(),i,Complex.Power(num1,i).ToString());
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Mid103_3
{
public partial class Form1 : Form
{
private Drink[] drinkArr = new Drink[10];
public Form1()
{
InitializeComponent();
cbox_DrinkSelect.SelectedIndex = 0;
cbox_SortType.SelectedIndex = 0;
}
private void btn_Confirm_Click(object sender, EventArgs e)
{
int amount = Drink.Amount;
if (amount > 10)
MessageBox.Show("點餐數目超過上限");
double volume=double.Parse(txt_DrinkVolume.Text);
switch (cbox_DrinkSelect.SelectedIndex)
{
case 0:
Water water=new Water(int.Parse(txt_WaterPricePerTime.Text),volume,double.Parse(txt_WaterDiscount.Text));
drinkArr[amount] = water;
break;
case 1:
SodaWater swater=new SodaWater(volume,double.Parse(txt_SodaWaterDiscount.Text));
drinkArr[amount] = swater;
break;
case 2:
Juice juice=new Juice(double.Parse(txt_JuicePricePerUnit.Text), volume,double.Parse(txt_JuiceDiscount.Text));
drinkArr[amount] = juice;
break;
}
txt_AmountOfDrink.Text = Drink.Amount.ToString();
}
private void SortByDrinkType()
{
for (int i = 0; i < Drink.Amount; i++)
{
for (int j = 0; j < Drink.Amount - 1; j++)
{
if (drinkArr[j].DrinkType > drinkArr[j + 1].DrinkType)
{
Drink temp=null;
temp = drinkArr[j];
drinkArr[j] = drinkArr[j+1];
drinkArr[j+1]=temp;
}
}
}
}
private void SortByPrice()
{
for (int i = 0; i < Drink.Amount; i++)
{
for (int j = 0; j < Drink.Amount - 1; j++)
{
if (drinkArr[j].Price() > drinkArr[j + 1].Price())
{
Drink temp = null;
temp = drinkArr[j];
drinkArr[j] = drinkArr[j + 1];
drinkArr[j + 1] = temp;
}
}
}
}
private void btn_CheckOut_Click(object sender, EventArgs e)
{
txt_Message.Text = "";
txt_Message.Update();
switch (cbox_SortType.SelectedIndex)
{
case 0:
SortByDrinkType();
break;
case 1:
SortByPrice();
break;
}
int total = 0;
for (int i = 0; i < Drink.Amount; i++)
{
txt_Message.AppendText(drinkArr[i].Show() + Environment.NewLine);
total += drinkArr[i].Price();
}
txt_Message.AppendText("總共 "+total.ToString()+ "元" +'\n');
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mid103_3
{
class Drink
{
private double volume;
private double discountRate;
private static int amount;
protected int drinkType;
public Drink(double volume, double discountRate)
{
this.Volume = volume;
this.DiscountRate = discountRate;
amount++;
}
public double Volume
{
get { return volume; }
set
{
if (value < 0)
volume = 0;
else
volume = value;
}
}
public int DrinkType
{
get{return drinkType;}
}
public static int Amount
{
get { return amount; }
}
public double DiscountRate
{
get { return discountRate; }
set
{
if (value < 0)
discountRate = 0;
else if (value > 1)
discountRate = 1;
else
discountRate = value;
}
}
public int Price()
{
return (int)(DiscountRate * OriginalPrice());
}
protected virtual int OriginalPrice()
{
return 0;
}
public string Show()
{
return ShowProperty() + '\t'+Price().ToString();
}
protected virtual string ShowProperty()
{
return "";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mid103_3
{
class Water:Drink
{
private int pricePerOnce;
public Water(int pricePerOnce, double volume, double discount)
: base(volume, discount)
{
this.PricePerOnce = pricePerOnce;
drinkType = 0;
}
public int PricePerOnce
{
get { return pricePerOnce; }
set
{
if (pricePerOnce < 0)
pricePerOnce = 0;
else
pricePerOnce = value;
}
}
protected override int OriginalPrice()
{
return PricePerOnce;
}
protected override string ShowProperty()
{
return string.Format("水\t{0}cc\t{1}", Volume,DiscountRate);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mid103_3
{
class SodaWater:Drink
{
private static int[] price={50,100,150};
public SodaWater(double volume, double discount)
: base(volume, discount)
{
drinkType = 1;
}
protected override int OriginalPrice()
{
if (Volume < 500)
return price[0];
else if (Volume < 1000)
return price[1];
else
return price[2];
}
protected override string ShowProperty()
{
return string.Format("汽水\t{0}cc\t{1}", Volume, DiscountRate);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mid103_3
{
class Juice:Drink
{
private double pricePerUnit;
public Juice(double pricePerUnit, double volume, double discount)
: base(volume, discount)
{
this.PricePerUnit = pricePerUnit;
drinkType = 2;
}
public double PricePerUnit
{
get { return pricePerUnit; }
set
{
if (pricePerUnit < 0)
pricePerUnit = 0;
else
pricePerUnit = value;
}
}
protected override int OriginalPrice()
{
return (int)(pricePerUnit * Volume);
}
protected override string ShowProperty()
{
return string.Format("果汁\t{0}cc\t{1}", Volume, DiscountRate);
}
}
}
沒有留言:
張貼留言