gpt4 book ai didi

c++ - 在 C++ switch-case 中引入循环

转载 作者:可可西里 更新时间:2023-11-01 15:38:30 24 4
gpt4 key购买 nike

我正在尝试使用这个 switch - case 语句。我想知道是否还有其他有效的方法来编写这段代码。 “函数”原型(prototype)是:int function(int a,int b, int c,int d)

switch (u) {
case 1:
t = t + function(0,2,1,0); // 1
break;
case 2:
t = t + function(0,2,1,0); // 1
t = t + function(1,2,2,0); // 2
break;
case 3:
t = t + function(0,2,1,0) ; // 1
t = t + function(1,2,2,0) ; // 2
t = t + function(0,3,3,1) ; // 3
break;
case 4:
t = t + function(0,2,1,0) ; // 1
t = t + function(1,2,2,0) ; // 2
t = t + function(0,3,3,1) ; // 3
t = t + function(1,3,4,1) ; // 4
t = t + function(3,2,4,0) ; // 6
break;
case 5:
t = t + function(0,2,1,0) ; // 1
t = t + function(1,2,2,0) ; // 2
t = t + function(0,3,3,1) ; // 3
t = t + function(1,3,4,1) ; // 4
t = t + function(2,3,5,1) ; // 5
t = t + function(3,2,4,0) ; // 6
t = t + function(4,2,5,0) ; // 7
break;
case 6:
t = t + function(0,2,1,0) ; // 1
t = t + function(1,2,2,0) ; // 2
t = t + function(0,3,3,1) ; // 3
t = t + function(1,3,4,1) ; // 4
t = t + function(2,3,5,1) ; // 5
t = t + function(3,2,4,0) ; // 6
t = t + function(4,2,5,0) ; // 7
t = t + function(3,3,6,1) ; // 8
break;
case 7:
t = t + function(0,2,1,0) ; // 1
t = t + function(1,2,2,0) ; // 2
t = t + function(0,3,3,1) ; // 3
t = t + function(1,3,4,1) ; // 4
t = t + function(2,3,5,1) ; // 5
t = t + function(3,2,4,0) ; // 6
t = t + function(4,2,5,0) ; // 7
t = t + function(3,3,6,1) ; // 8
t = t + function(4,3,7,1) ; // 9
t = t + function(6,2,7,0) ; // 11
break;
case 8:
t = t + function(0,2,1,0) ; // 1
t = t + function(1,2,2,0) ; // 2
t = t + function(0,3,3,1) ; // 3
t = t + function(1,3,4,1) ; // 4
t = t + function(2,3,5,1) ; // 5
t = t + function(3,2,4,0) ; // 6
t = t + function(4,2,5,0) ; // 7
t = t + function(3,3,6,1) ; // 8
t = t + function(4,3,7,1) ; // 9
t = t + function(5,3,8,1) ; // 10
t = t + function(6,2,7,0) ; // 11
t = t + function(7,2,8,0) ; // 12
break;
}

有什么办法可以缩短这段代码吗?

每个新案例都具有与前一个案例相同的功能加上一两个新功能。

最终目标:目标是代码更少,代码中的手动输入更少。

请发布答案以减少代码长度。

到目前为止发布的所有答案都没有考虑自动创建数字本身,因为即使这些数字也有一个模式。

最佳答案

反转大小写并删除所有break。然后去掉普通的+=:

switch (u)
{
case 8:
t += function(5, 3, 8, 1); // 11
t += function(7, 2, 8, 0); // 12
case 7:
t += function(4, 3, 7, 1); // 9
t += function(6, 2, 7, 0); // 10
case 6:
t += function(4, 2, 5, 0); // 7
t += function(3, 3, 6, 1); // 8
case 5:
t += function(2, 3, 5, 1); // 5
t += function(4, 2, 5, 0); // 6
case 4:
t += function(1, 3, 4, 1); // 4
t += function(3, 2, 4, 0); // 5
case 3:
t += function(0, 3, 3, 1); // 3
case 2:
t += function(1, 2, 2, 0); // 2
case 1:
t += function(0, 2, 1, 0); // 1
}

关于c++ - 在 C++ switch-case 中引入循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19152429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com