因为缺乏看似合理的编程逻辑而被难住了。
我在SSIS的脚本任务中。我需要做一些数据tranformations..as下面..
switch(LeadTime)
{
case: 1
WM1 = DAY1
WM2 = DAY2
WM3 = DAY3
WM4 = DAY4
WM5 = DAY5
WM6 = DAY6
WM7 = DAY7
case: 2
WM1 = DAY1 + DAY2
WM2 = DAY2 + DAY3
WM3 = DAY3 + DAY4
WM4 = DAY4 + DAY5
WM5 = DAY5 + DAY6
WM6 = DAY6 + DAY7
WM7 = DAY7 + DAY1
case: 3
WM1 = DAY1 + DAY2 + DAY3
WM2 = DAY2 + DAY3 + DAY4
WM3 = DAY3 + DAY4 + DAY5
WM4 = DAY4 + DAY5 + DAY6
WM5 = DAY5 + DAY6 + DAY7
WM6 = DAY6 + DAY7 + DAY1
WM7 = DAY7 + DAY1 + DAY2
..................
case: 7
WM1 = DAY1 + DAY2 + DAY3 + DAY4 + DAY5 + DAY6 + DAY7
WM2 = DAY2 + DAY3 + DAY4 + DAY5 + DAY6 + DAY7 + DAY1
WM3 = DAY3 + DAY4 + DAY5 + DAY6 + DAY7 + DAY1 + DAY2
WM4 = DAY4 + DAY5 + DAY6 + DAY7 + DAY1 + DAY2 + DAY3
WM5 = DAY5 + DAY6 + DAY7 + DAY1 + DAY2 + DAY3 + DAY4
WM6 = DAY6 + DAY7 + DAY1 + DAY2 + DAY3 + DAY4 + DAY5
WM7 = DAY7 + DAY1 + DAY2 + DAY3 + DAY4 + DAY5 + DAY6
}
我如何围绕这一点构建一个循环,以使其成为良好的编程?我不知所措,因为它从中间值之后的两端相加。
这是我唯一能做的!:O
case: 7
for(int i=0;i<LeadTime;i++)
{
WM1 += Array[i];
WM2 += Array[i];
...
WM7 += Array[i];
}
发布于 2011-04-02 05:15:15
这样的东西应该适用于所有情况(假设数组是从零开始的):
for(int i=0;i<LeadTime;i++)
{
WM1 += Array[(0+i)%7];
WM2 += Array[(1+i)%7];
...
WM7 += Array[(6+i)%7];
}
发布于 2011-04-02 05:15:06
您可以使用模数来进行环绕。这应该适用于所有人:
WM = new int[7];
for (int i = 0; i < LeadTime; i++) {
for (int j = 0; j < WM.Length; j++) {
WM[j] += Array[(i + j) % 7];
}
}
发布于 2011-04-02 05:17:19
您要做的是创建一个函数,您可以在不同的情况下调用该函数。
function foo(int LeadTime) {
for(int i=0; i < LeadTime; i++){
int k = i;
for (int j = 0; j < LeadTime; j++){
if (k > 7) { k = 1; }
wm[i] += day[k];
k++;
}
}
}
https://stackoverflow.com/questions/5518828
复制相似问题