私はそれを偽装しません.プログラミングタスクの最適化の宿題を受け取りました.私のソリューションが正しいことについて確認する必要があります.
タスクは次のとおりです。行の数が乱数で、各行の長さが異なる行列を取得します。得られたマトリックスにはセンチネルがあります。各行の最後に -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
、有効な行が見つかったかどうかは の値によって決まり、行列の最後に到達したために終了します。
ランダムな行列でテストしましたが、まだ確信が持てないので、確認が必要です。
私はその仕事をうまくやり遂げましたか?