2015-10-15 39 views
-4

所以我有一个assingment。它是这样的。这有点复杂。C#可分3个(简单)

该程序从用户读取3个数字。

IF这些号码中没有一个是可分割的具有3个或这些数字中的一个是可分割带3,3输入的号码保持相同。(情况1)

IF这些数字中的两个是可分割带3则程序将获取值更高的值并为其添加+1(案例2)。但是如果这两个数字是相等的,那么写入的第二个数字会加上+1(情况3)

并且如果所有数字都可以用3分割那么第二个inputetd数字取+1和第三个输入数字被添加2(情况4):

CASE 1:输入:7 9 7 输出:7 7 7

CASE 2:输入:9 -5 6 输出:10 -5 6 CASE 3:输入:9 4 9 输出:9 4 10

案例4:输入:9 -6 6 输出:9 -5 8

这就是我所拥有的,但它不起作用。

class Program 
{ 
    static void Main(string[] args) 
    { 

     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) 
     { 
      Console.WriteLine(" " + a + " " + b + " " + c); 
      Console.ReadKey(); 
     } 
     else 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) 
     { 
      Console.WriteLine(" " + a + " " + b + " " + c); 
      Console.ReadKey(); 
     } 
     else 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) 
     { 
      if (a > b) 
      { 
       a = a + 1; 
      } 
      else if (b > a) 
      { 
       b = b + 1; 
      } 
      else if (b == a) ; 
      { 
       b = b + 1; 
      } 
      Console.WriteLine(a); 
      Console.WriteLine(b); 
      Console.WriteLine(c); 
      Console.ReadKey(); 
     } 
     else if (a % 3 == 0 && b % 3 == 0 && c % 3 == 0) 
     { 
      b = b + 1; 
      c = c + 1; 
      Console.WriteLine(a); 
      Console.WriteLine(b); 
      Console.WriteLine(c); 
      Console.ReadKey(); 
     } 

    } 
} 
+0

这不是一个家庭作业农场 – scniro

+0

它是大学的作品吗? –

+1

请详细说明“它不起作用”。不编译?你有例外吗?错误的输出?你在调试器中运行它,看看它出错了吗? –

回答

-1

我要调试代码的一部分,然后想其他修复将以类似的manner.Taking来完成作为一个例子你上面的代码的一部分来证明:

(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) 

假定这是整整三个中的一个检查3整除,我想可能考虑重新写这样说:

((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)) 

注意,不仅在括弧中加入使事情磕磕碰碰分组呃,但是最后一组3有&&而不是||

加括号的原因是你想要一起评估事物。第一个代码行可能存在一个问题,如果a不能被3整除,则整个表达式被短路为假,因为假AND与任何东西都是假的,类似于乘以0将在正则数学中产生0。


这附近的什么我最初复制的结束,你在你的逻辑有一个部分:

|| a % 3 != 0 || b % 3 != 0 || c % 3 == 0) 

我改成了这样:

​​

我在哪里更换一对||&&,因为这部分检查c可被3整除,但a和b不是一个整体。

+0

我不知道如何在实践中使用它。我明白,但我无法编程。 –

+0

我的意思是我可以,如果我知道如何开始。 –

+0

为什么downvote? –