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美元,而不是两者都赢?请注意,这是一个基本的编程类。没有什么特别的。

c编程.确保没有重复

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");
}

这应该行得通。您可能还需要检查变量名称;在比较中,您可能忘记了增加变量名末尾的数字。