2016-08-27 11 views
-5

に複数回のコードのブロックを使用して:C++、私はこのような何か必要がある主なコード

#include <iostream> 
using namespace std; 
int main(){ 
int x; 
x=0; 
SOMETHING{ 
    cout << "Something has been done" << endl; 
    x++; 
} 
do SOMETHING; 
return 0; 
} 

を、私はメインのコードに多くの時間を繰り返すことになるコードのブロックを定義したいのですが、ループではありません。私は関数を必要としません、私はちょうど後で何度も繰り返すコードの一部を定義したいと思います。そして、私は単純に1行で呼び出すことができます(コードの部分は、整数/配列で動作する必要があります。メインコード)。 誰かが私を助けることができますか?

これはRubikの立方体を解くためのプログラムです。 ( - ただ周りの色を切り替えるように動きを可能にする動きが行われた前に1、および1つの助力状態)

#include <iostream> 
using namespace std; 
int main(){ 
    int front[10], back[10], left[10], right[10], top[10], bottom[10]; 
    int frontP[10], backP[10], leftP[10], rightP[10], topP[10], bottomP[10]; 
    /* Assuming the data has been inputed */ 

    /* Move Top Clockwise - U */ 
    left[1]=frontP[1];left[2]=frontP[2];left[3]=frontP[3]; 
    back[1]=leftP[1];back[2]=leftP[2];back[3]=leftP[3]; 
    right[1]=backP[1];right[2]=backP[2];right[3]=backP[3]; 
    front[1]=rightP[1];front[2]=rightP[2];front[3]=rightP[3]; 
    top[1]=topP[7];top[2]=topP[4];top[3]=topP[1];top[4]=topP[8];top[6]=topP[2];top[7]=topP[9];top[8]=topP[6];top[9]=topP[3]; 
    for (int i=1;i<=9;i++){ 
     topP[i]=top[i];leftP[i]=left[i];rightP[i]=right[i];backP[i]=back[i];frontP[i]=front[i]; 
    } 
} 

12のキューブの2つの状態を表す配列があります。それはこのようになります。 "上に時計回りに移動"機能は、周囲の色を切り替えて配列を平均化し、文字列「U」を解決文字列にします。 12の可能な移動があり、完全なアルゴリズムはrubiksキューブを解決する最短の文字列(例えば "RL'DUB '")を見つけるはずです。 私のプログラムは本当にRubikのキューブを解決するものではありませんが、この例は私の問題を説明するのに役立ちました。

+9

それは私にとって機能のように聞こえる。 –

+0

Oliverは関数がこれに完全に適合するでしょう – PSD

+0

このコードブロックが何であるかの実際の例と、それが関数でできない理由を表示できますか? – Barmar

答えて

0

関数を使用したくない場合は、C++ 11で始まるlamdasを使用してください。

ラムダは、あなたがすることが別の関数を定義したくないように見える基本的に私はあなたが欲しいものだと思う、無名関数、以下のとおりです。次に

auto something = [&x]() { 
    std::cout << "Something had been done\n"; 
    ++x; 
}; 

を、あなたはそれを呼び出すことができます。

something(); 
関連する問題