伊莉討論區
標題:
[問題]三個數排大小求幫找錯誤
[打印本頁]
作者:
pftest1033214
時間:
2017-10-5 09:47 PM
標題:
[問題]三個數排大小求幫找錯誤
[attach]120522594[/attach]
作者:
rr09192084
時間:
2017-10-6 04:44 PM
本帖最後由 rr09192084 於 2017-10-7 09:15 AM 編輯
static void Main(string[] args)
{
double a, b, c, max, second, third;
string inputa;
do
{
Console.Write("Type a =");
inputa = Console.ReadLine();
} while (!Double.TryParse(inputa, out a));
string inputb;
do
{
Console.Write("Type b =");
inputb = Console.ReadLine();
} while (!Double.TryParse(inputb, out b));
string inputc;
do
{
Console.Write("Type c =");
inputc = Console.ReadLine();
} while (!Double.TryParse(inputc, out c));
double[] ary = { a, b, c };
max = Max(ary);
second = Second(ary);
third = Third(ary);
Console.Write("Max = " + max + " ");
Console.Write("Second = "+second + " ");
Console.Write("Third =" + third);
Console.ReadKey();
}
private static double Max(double[] ay)
{
Double MaxN = ay[0];
foreach (Double m in ay)
{
if (m > MaxN)
MaxN = m;
}
return MaxN;
}
private static double Second(double[] ay)
{
double mx = Max(ay);
double seN = ay[0];
foreach (Double m in ay)
{
if (m < mx)
{
if (m > seN)
seN = m;
}
}
return seN;
}
複製代碼
你這是C語言的,我寫了一個C#的你參考看看。
作者:
rr09192084
時間:
2017-10-7 09:18 AM
private static double Third(double[] ay)
{
double thirdN = ay[0];
double seN = Second(ay);
foreach (Double m in ay)
{
if (m < seN)
{
if (m >= thirdN)
thirdN = m;
}
}
return thirdN;
}
複製代碼
補充求第三大數字的函式
作者:
rr09192084
時間:
2017-10-8 08:49 AM
static void Main(string[] args)
{
double a, b, c, max, second, third;
string inputa;
do
{
Console.Write("Type a =");
inputa = Console.ReadLine();
} while (!Double.TryParse(inputa, out a));
string inputb;
do
{
Console.Write("Type b =");
inputb = Console.ReadLine();
} while (!Double.TryParse(inputb, out b));
string inputc;
do
{
Console.Write("Type c =");
inputc = Console.ReadLine();
} while (!Double.TryParse(inputc, out c));
double[] ary = { a, b, c };
bubbleSort(ary);
max = ary[0];
second = ary[1];
third = ary[2];
Console.Write("Max = " + max + " ");
Console.Write("Second = "+second + " ");
Console.Write("Third =" + third + "\r\nPress any key to quit....");
Console.ReadKey();
}
public static void bubbleSort(double[] list)
{
int n = list.Length;
double temp;
int Flag = 1; //旗標
int i;
for (i = 1; i <= n - 1 && Flag == 1; i++)
{ // 外層迴圈控制比較回數
Flag = 0;
for (int j = 1; j <= n - i; j++)
{ // 內層迴圈控制每回比較次數
if (list[j] > list[j - 1])
{ // 比較鄰近兩個物件,右邊比左邊大時就互換,降冪排序,此地改小於就是升冪排序。
temp = list[j];
list[j] = list[j - 1];
list[j - 1] = temp;
Flag = 1;
}
}
}
}
複製代碼
我重複試了幾次,發現上之前的方法有問題,所以改了用降冪排序法,這樣就保證前3個元素就是正解了。
作者:
pftest1033214
時間:
2017-10-8 10:18 AM
謝謝大大 終於做出來了 中秋連假祝大大玩得愉快
歡迎光臨 伊莉討論區 (http://www545675.eyny.com/)
Powered by Discuz!