如何组合代码

How can I combine code

本文关键字:代码 组合 何组合      更新时间:2023-10-16

我写了一个程序,但我觉得用一个代码两次不好。

有问题的地方在这里:

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;
           }
        }
     }
 }

简单的方法可以是:

 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;
        }
    }
  }
}