c#中的可分数(可能很容易回答)

时间:2015-10-24 01:27:32

标签: c#

我有一个编写c#程序的任务,首先读取3个数字。

CASE1: 如果这些数字中的任何一个都不可分,3或1的数字可以用3分割,则值保持不变。 例如: 用户输入:7 -5 6 节目输出:7 -5 6

CASE2: ELSE如果只有两个数字可以用3分割,程序将获得具有较高值的​​数字并将该值增加为1。 例如: 用户输入:9 -5 6 节目输出:10 -5 6 //所以它给了更高的一个(9)并加了+1所以它变成了(10)

CASE3: 但如果这两个数字相同,那么程序会将第二个数字加上+1 例如: 用户输入:9 4 9 节目输出:9 4 10(节目在最后9节加+1,因为它是第二个写出来的)

CASE4: 但是如果所有3个数字都可以用3分割,那么程序会添加第二个数字+1和最后一个数字+2 例如: 用户输入:9 -6 6 节目输出:9 -5 8

案例解决方案:1 //未找到 所以我到目前为止,如果我进入:" 4 4 4"程序返回" 4 4 4"对我来说。但如果我进入" 3 4 4"或" 4 3 4"或" 4 4 3"该程序返回" dog",但它应该仍然返回3个数字给我,因为只有1可以用3分割。

  {

            int a, b, c;
            Console.WriteLine("Vnesite prvo stevilo: ");
            a = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Vnesite drugo stevilo: ");
            b = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Vnesite tretje stevilo: ");
            c = Convert.ToInt32(Console.ReadLine());

           if((a%3!=0) && (b%3!=0) && (c%3!=0) || (a%3!=0) && (b%3==0) && (c%3==0) || (a%3==0) && (b%3!=0) && (c%3==0) || (a%3==0) && (b%3==0) && (c%3!=0))
           {
               Console.WriteLine(a + " " + b + " " + c);
               Console.ReadKey();
           }
           else
           {
               Console.WriteLine("dog");
               Console.ReadKey();
           }

        }

案例2的解决方案:未找到 解决方案3:未找到 解决方案4:未找到

2 个答案:

答案 0 :(得分:0)

我想提出一些建议。

对于第一种情况,只需检查两个是否不能被三整除。在任何情况下,如果两个不可分,它将满足标准:

// Divisible by three booleans:
bool a3 = (a % 3 == 0);
bool b3 = (b % 3 == 0);
bool c3 = (c % 3 == 0);

// Case 1:
if ((!a3 && !b3) || (!b3 && !c3) || (!a3 && !c3))

然后对于你的第二和第三种情况,只要确保不是每个数字都不可分为三个:

// Case 2 & 3:
else if (!(!a3 && !b3 && !c3))

然后你知道只有两个可以被三个整除。通过两个数字的每种可能性,如:

if (a3 && b3)
{
    if (a > b)
        a++;
    else
        b++;
}

只要它按顺序排列,它也将满足案例3。然后处理你的最后一案。我相信这会让你走上正轨。

我试图向您展示什么可以帮助您自己解决问题。根据您的接近程度,您可能会遇到一些问题。你走在正确的轨道上。祝你好运!

答案 1 :(得分:0)

下面的代码就是我如何解决这个问题。

这是我的逻辑:

您需要跟踪三件事。

1)有多少可以被三个整除

2)他们中的任何一个彼此相等

3)最大的数字是什么

解决这些组件后,只需将它们正确嵌套即可。

让我知道我故意在这里放一个会触发某些时间的错误。好的经验法则是永远不要破解代码,只是希望它在查看之前能够正常工作。

try
{
int a, b, c;
int count = 0;

Console.WriteLine("Vnesite prvo stevilo: ");
a = Convert.ToInt32(Console.ReadLine());
bool a1 = (a % 3 == 0);
if (a1) count++;

Console.WriteLine("Vnesite drugo stevilo: ");
b = Convert.ToInt32(Console.ReadLine());
bool b1 = (b % 3 == 0);
if (b1) count++;

Console.WriteLine("Vnesite tretje stevilo: ");
c = Convert.ToInt32(Console.ReadLine());
bool c1 = (c % 3 == 0);
if (c1) count++;

if (count == 3)
{
    b++;
    c += 2;
}

if (count == 2)
{
    if (a1 & b1 & a != b) b++;
    else if ((a1 & c1 && a == c) || (b1 & c1 & b == c)) c++;
    else
    {
        int[] abc = { a, b, c };
        if (a == abc.Max()) a++;
        else if (b == abc.Max()) b++;
        else if (c == abc.Max()) c++;
    }
}

Console.WriteLine(string.Format("{0} {1} {2}", a, b, c));
Console.ReadKey();
}

catch
{
    Console.WriteLine("dog");
    Console.ReadKey();
}