0

私はそれを偽装しません.プログラミングタスクの最適化の宿題を受け取りました.私のソリューションが正しいことについて確認する必要があります.

タスクは次のとおりです。行の数が乱数で、各行の長さが異なる行列を取得します。得られたマトリックスにはセンチネルがあります。各行の最後に -1 の値があります。行列の最後の行は -1 の値で始まります。行列の 1 つおきの値は正の整数と 0 です。

タスクは、要素が 0 個しかない最初の行を見つけて (センチネルを除いて)、それを書き込むことですwhile。また、2 つの変数、1 つのループ、およびその中の 1 つの条件のみを使用する必要があります。

全体として、コードは次のような一般的な形式でなければなりません (行列の定義を除く:

//'sor' means row, 'oszlop' means coloumn

int sor, oszlop;

while(){
    if(){

    }else{

    };
}

if (){
cout <<"We couldn't find a row with only 0 elements."<<end; 
}else{                                      
cout <<"We could, and this is:"<<end;   
}

そして、これは私のコードです( 内の部分のみmain()で、行列の定義も除外されています):

int sor=0, oszlop=0;                    

while (x[sor][oszlop]!=-1){             
    if (x[sor][oszlop]==0){ 
        ++oszlop;           
    }else{      
        ++sor;  
        oszlop=0;           
    }
}

if (oszlop==0){
cout <<"We couldn't find a row with only 0 elements."<<end; 
}else{                                      
cout <<"We could, and this is:"<<end;   
}

コードは最後に到達するまで、無効な列をスキップします。または、任意の行の終わりに到達できる場合は終了しますが、すべての要素が 0 の場合にのみ終了できます。

-1 が見つかった場合は必ず終了しますがoszlop、有効な行が見つかったかどうかは の値によって決まり、行列の最後に到達したために終了します。

ランダムな行列でテストしましたが、まだ確信が持てないので、確認が必要です。

私はその仕事をうまくやり遂げましたか?

4

1 に答える 1