2011-12-11 19 views
0

私は3つのint型の配列A、B、Cを持っています。配列Aの要素が素数であるかどうかチェックします。配列の中でプライムであれば配列Bにコピーされます。アレイ。 (これを行う動作)空の配列要素を印刷する方法/ Cの配列要素をスキップする方法は?

if(onalg) 
    { 
    B[i]=A[i]; 
    } 
    else 
    { 
    C[i]=A[i]; 
    } 

はその後qソートを使用して配列BとCをソート:

これは、との問題があるコード片です。どのように私はそれは、アレイ内の空のスポットを印刷することができます

for(i=0;i<n;i++) 
{ 
    printf("%d  %d  %d\n", A[i],B[i], C[i]); 
} 

:それはこのようなすべてのアレイを印刷することがあること すべての後に?現在、B [i] = A [i]のときは配列C [i]のスポットに、C [i] = A [i]のときは配列B [i]に乱数をいくつか出力します。

答えて

1

できません。
配列メンバーに値を割り当てる必要があります。この値は、初期化されていないことを示し、その値をチェックし、印刷中に空白として扱います。

if(onalg) 
{ 
    B[i]=A[i]; 
    C[i]= //Some place holder value indicating unfilled; 
} 
else 
{ 
    C[i]=A[i]; 
    B[i]= //Some place holder value indicating unfilled; 
} 
+0

配列が塗りつぶされていないことを示すそのプレースホルダは何ですか? S – Andr3az

+0

@ user1092141:プレースホルダとは、あなたが決してあなたの配列(例えば、-999)の中で有効な値ではないと決める値を意味し、次にそれをチェックしている間にそれをチェックします空白をいつ印刷するかを知る。 –

1

どちらかあなたは(例えばmemset付き)でそれらを埋める開始するか、各条件の両方でそれらを設定する前に、あなたの配列BCを初期化します。

if(onalg) 
{ 
    B[i]=A[i]; 
    C[i]=-1; // or some other constant 
} 
else 
{ 
    C[i]=A[i]; 
    B[i]=-1; // or some other constant 
} 

あなたは「ガード」として使用することができ、一定していない場合は、BC RESPにそのインデックスかどうかを格納し、適切に初期化され、さらに2つの配列を、使用することを検討してください。設定されているかどうか。

"未設定"値の場合、ブランクを印刷するには、表示コードにさらにロジックが必要です。

0
CString strA, strB, strC; 

for(i=0;i<n;i++) 
{ 
    if (A.GetLength() > i+1) 
     strA = Format(%d, A[I]); 
    else 
     strA = ""; 

    if (B.GetLength() > i+1) 
     strB = Format(%d, B[I]); 
    else 
     strB = ""; 

    if (C.GetLength() > i+1) 
     strC = Format(%d, C[I]); 
    else 
     strC = ""; 

    printf("%s  %s  %s\n", strA, strB, strC); 
} 
関連する問題