我怎样才能结合代码

问题描述:

我写了一个程序,但是我觉得不好我用了两次代码。我怎样才能结合代码

有问题的地方就在这里:

if (2 * cell_price > large_cell_price) { 
    for (int i = 0; i < parquet.size(); ++i) { 
     for (int j = 0; j < parquet[i].size(); ++j) { 
     if (parquet[i][j] == '*') { 
      if (j + 1 < parquet[i].size() && parquet[i][j + 1] == '*') { 
      j++; 
      sum += large_cell_price; 
      } else { 
      sum += cell_price; 
      } 
     } 
    } 
    } 
} else { 
    for (int i = 0; i < parquet.size(); ++i) { 
     for (int j = 0; j < parquet[i].size(); ++j) { 
     if (parquet[i][j] == '*') { 
      sum += cell_price; 
     } 
     } 
    } 
    } 

我做循环两次:

for (int i = 0; i < parquet.size(); ++i) { 
    for (int j = 0; j < parquet[i].size(); ++j) { 

我不能合并。我如何做到这一点?

试试这个代码:

for (int i = 0; i < parquet.size(); ++i) { 
    for (int j = 0; j < parquet[i].size(); ++j) { 
     if (parquet[i][j] == '*') { 
      if (j + 1 < parquet[i].size() && 
       parquet[i][j + 1] == '*' && 
       (2 * cell_price > large_cell_price)) { 
      j++; 
      sum += large_cell_price; 
      } else { 
      sum += cell_price; 
      } 
     } 
    } 
} 
+0

是不坏,如果我将检查'2 * cell_price> large_cell_price'每次迭代? – rel1x 2015-04-01 10:54:55

+0

@ rel1x,它比两次运行'for'loop更好。 – Himanshu 2015-04-01 10:57:28

+0

非常感谢你! – rel1x 2015-04-02 06:11:10

最简单的方法可以是:

for (int i = 0; i < parquet.size(); ++i) { 
    for (int j = 0; j < parquet[i].size(); ++j) { 
    if (2 * cell_price > large_cell_price) { 
     if (parquet[i][j] == '*') { 
      if (j + 1 < parquet[i].size() && parquet[i][j + 1] == '*') { 
      j++; 
      sum += large_cell_price; 
      } else { 
      sum += cell_price; 
      } 
     } 
    } else { 
     if (parquet[i][j] == '*') { 
      sum += cell_price; 
     } 
    } 
    } 
}