5. 模擬今彩 539

選擇排序法: 選擇陣列之後的最小值,與目前 index 交換

# 1/int 需要轉換為 (double) 1/int 否則可能會只有 0

Console.WriteLine("***模擬今彩539***");
Console.Write("今彩539之5個1~39號碼:\t");
int[] n = new int[5];
for (int i = 0; i < 5; i++)
{
    n[i] = new Random().Next(39) + 1;
    Console.Write(n[i] + " ");
}
Console.WriteLine();
Console.Write("請輸入存今彩539之5個號碼的檔名: ");
var saveFile = Console.ReadLine();
File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "/" + saveFile, string.Join(" ", n));
Console.WriteLine();
Console.Write("請輸入要讀今彩539之5個號碼的檔名: ");
var data = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "/" + Console.ReadLine());
var raw = data.Split(' ');
for (int i = 0; i < 5; i++) n[i] = int.Parse(raw[i]);

double calc = 0;
for (int i = 0; i < 5; i++)
    calc += n[i];
calc /= 5;

double mix = 5;
double tmp = 0;
for (int i = 0; i < 5; i++)
    tmp += ((double)1 / n[i]);
mix /= tmp;

double square = 1;
for (int i = 0; i < 5; i++)
    square *= n[i];
square = (double)Math.Pow((double)square, 1.0 / 5);

Console.WriteLine($"今彩539之五個號碼的算術平均數: {calc:0.000000}");
Console.WriteLine($"今彩539之五個號碼的調和平均數: {mix:0.000000}");
Console.WriteLine($"今彩539之五個號碼的幾何平均數: {square:0.000000}");

Console.WriteLine();
Console.WriteLine("排序前的資料:  " + string.Join("\t", n));
Console.WriteLine();
for (int i = 0; i < 4; i++)
{
    int minIndex = i;
    for (int j = i + 1; j < 5; j++)
        if (n[j] < n[minIndex]) minIndex = j;
    int t = n[minIndex];
    n[minIndex] = n[i];
    n[i] = t;

    Console.Write("第  " + (i + 1) + " 次選擇:  ");
    for (int j = 0; j < 5; j++) Console.Write(n[j] + (j == minIndex ? "*" : "") + "\t");
    Console.WriteLine();
    Console.Write("              ");
    for (int j = 0; j < i + 1; j++)
    {
        Console.Write("--\t");
    }
    Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine("排序後的資料:  " + string.Join("\t", n));
Console.WriteLine();
Console.WriteLine("今彩539之5個號碼的中位數: " + n[2]);

Last updated