c编程.确保没有重复
本文关键字:编程 确保 | 更新日期: 2023-09-27 18:02:43
所以基本上我必须创建一个介于1-4之间的彩票程序。用户猜测3个数字,你必须看看它们是否与这三个数字都匹配。我的问题是为了获得大奖。你必须将你的猜测与正确序列中的随机数相匹配。例如
if (guess1 == ran1 && guess2 == ran2 && guess3 == ran3)
Console.WriteLine("$10,000");
但同时,如果你在一个错误的序列中匹配三个数字。你仍然可以得到1000美元。但这就是我遇到问题的地方。我写了1000美元的代码,就像这个
{if (guess1 == ran1)
++matches;
else
if (guess1 == ran2)
++matches;
else
if (guess1 == ran3)
++matches;
}
{
if (guess1 == ran1)
++matches;
else
if (guess1 == ran2)
++matches;
else
if (guess1 == ran3)
++matches;
}
{
if (guess1 == ran1)
++matches;
else
if (guess1 == ran2)
++matches;
else
if (guess1 == ran3)
++matches;
if (matches == 3)
Console.WriteLine("$1000");
所以每次你赢得大奖,你都会赢得10000美元和1000美元,但这不是我想要的。
我有没有办法解决这个问题,这样当用户按正确的顺序输入彩票号码时,他们只会赢得10000美元,而不是两者都赢?请注意,这是一个基本的编程类。没有什么特别的。
LINQ是花哨的吗?
bool userGuessedInOrder = guesses.SequenceEqual(correctNumbers);
bool userGuessedInSomeOrder = !guesses.Except(correctNumbers).Any();
作为一个稍微简单的基于LINQ的解决方案,它说明了如何将数字封装在数据结构中,以及如何将算法封装在函数中。
public static int Payout(IEnumerable<int> randoms, IEnumerable<int> guesses)
{
if (randoms.SequenceEqual(guesses))
return 10000;
IEnumerable<int> sortedRandoms = randoms.OrderBy(a => a);
IEnumerable<int> sortedGuesses = guesses.OrderBy(a => a);
if (sortedRandoms.SequenceEqual(sortedGuesses))
return 1000;
return 0;
}
if (guess1 == ran1 && guess2 == ran2 && guess3 == ran3)
{
Console.WriteLine("$10000");
}
else if ((guess1 == ran1 || guess1 == ran2 || guess1 == ran3) &&
(guess2 == ran1 || guess2 == ran2 || guess2 == ran3) &&
(guess3 == ran1 || guess3 == ran2 || guess3 == ran3))
{
Console.WriteLine("$1000");
}
这应该行得通。您可能还需要检查变量名称;在比较中,您可能忘记了增加变量名末尾的数字。