我有一个编写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:未找到
答案 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();
}