educoderポインタと配列
3695 ワード
テーマの出所:educoderテーマのプログラミングは右側のエディタに関数Splitがあることを要求して、それは2つのパラメータarrとlenがあって、arrは1つの配列を指して、この配列の長さはlenです.
arr配列には1,0の2つの値しか含まれていません.この関数にコードを補充してください.この配列の0を配列の左側(すなわち、アドレス値の小さい側)、1を配列の右側に置いてください.
入力データは評価システムによって読み出され、Split関数に渡され、arrが指す配列の内容が出力されます.詳細はテストの説明を参照してください.
テスト説明プラットフォームでは、作成したコードをテストします.
期待入力:5 1 0 1 1予想出力:0 1 1 1 1 1
期待入力:3 0 1 0期待出力:0 1
各グループの入力には2行あり、1行目は1つの数nであり、2行目はn個の数であり、配列の内容である.参照コード:
arr配列には1,0の2つの値しか含まれていません.この関数にコードを補充してください.この配列の0を配列の左側(すなわち、アドレス値の小さい側)、1を配列の右側に置いてください.
入力データは評価システムによって読み出され、Split関数に渡され、arrが指す配列の内容が出力されます.詳細はテストの説明を参照してください.
テスト説明プラットフォームでは、作成したコードをテストします.
期待入力:5 1 0 1 1予想出力:0 1 1 1 1 1
期待入力:3 0 1 0期待出力:0 1
各グループの入力には2行あり、1行目は1つの数nであり、2行目はn個の数であり、配列の内容である.参照コード:
#include
using namespace std;
void Split(int *arr,int len)
{
//
int *start=arr;
int *end=arr+len-1;
while(true)
{
while(start<end&&*start==0)
start++;
while(start<end&&*end==1)
end--;
if(start<end)
{
int t=*start;
*start=*end;
*end=t;
}
else
break;
}
/********** End **********/
}