C ++ - 可变减量

时间:2015-06-10 14:31:16

标签: c++ function variables multidimensional-array char

Heys。

我有这个代码,它为一些神秘的原因设置了一个表。尺寸为6x60。这意味着 SIZEY 定义为6, SIZEX 定义为60。

void set_table(char** table)
{
    int i,j,k=0;

    for(i=0;i<SIZEY;i+=3){
        for(j=0;j<SIZEX;j++){
            switch(k++%5){
                case 0:
                    table[i][j]='|';
                    break;
                case 1:
                    table[i][j]=' ';
                    break;
                case 2:
                    table[i][j]=(char)((((k-2)/50)%10)+48);
                    break;
                case 3:
                    table[i][j]=(char)((((k-3)/5)%10)+48);
                    break;
                case 4:
                    table[i][j]=' ';
                    break;
                default:
                    continue;
            }
        }
    }
}

我正在使用3个变量执行此操作,如您所见。问题是,我可以用2个变量,甚至只有1个变量吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

以下是对您的简化:

    switch(k++%5){
        case 0:
            table[i][j]='|';
            break;
        case 1:
        case 4:
            table[i][j]=' ';
            break;
        case 2:
        case 3:
            table[i][j]= '0';
            break;
        default:
            continue;
  }

使用C ++,一个案例可以落入到另一个案例,例如上面的案例1和案例2。

您的案例2和3的表达式可以简化。我将以案例2为例:
((((k-2)/50)%10)+48)
用2代替k得到
((((2-2)/50)%10)+48)
简化:
((((0)/50)%10)+48)
零除以任何值为零,再次简化:
(((0)%10)+48)
Zero mod是零,因为它涉及分裂:
((0)+48)
简化:
(48)
替换为等效字符(因为您的数组为char):
'0'