2017-01-07 11 views
2

整数配列を偶数配列と奇数配列にソートするタスクがあります。それから私はどの桁に配置されているかを示さなければなりません。しかし、私のコードでは、配列のすべての場所が占有されているわけではないので、最終的には、配列oddとevensに何が含まれているかを見せたいときに乱数を受け取ります。乱数の代わりに、文字通りその場に何も追加しないことを望んでいます。Cでint配列に 'nothing'を追加するには

私は次のようでした:

int main() 
{ 
    int evens[10], whole[10], odds[10], i; 

    printf("Enter 10 integer(/whole) numbers\n"); 
    for (i = 0; i < 10; i++) 
    { 
     scanf("%d", &whole[i]); 
     if (whole[i] % 2 == 0) 
     { 
     evens[i] = whole[i]; 
     else odds[i] = whole[i]; 
     } 
    } 

    printf("Your even numbers are the following:\n"); 
    for (i = 0; i < 10; i++) 
    { 
     printf("%d\n", evens[i]); 
    } 

    printf("Your odd numbers are the following:\n"); 
    for (i = 0; i < 10; i++) 
    { 
     printf("%d\n", odds[i]); 
    } 

return 0; 
} 

、その後、私は1から10まで入力された数字を持つために、この出力を得る:

Your even numbers are the following: 
    -1832565259 
    2 
    1985901418 
    4 
    4200864 
    6 
    4200958 
    8 
    74 
    10 

    Your odd numbers are the following: 
    1 
    4200864 
    3 
    6356652 
    5 
    1986281400 
    7 
    1985964450 
    9 
    1985901427 

それでは、どのように私はこれらがなくても、配列オッズ/を得るのですか間に1985964450のようなランダムな数字?代わりに文字通り何も追加するコマンドはありますか?

+1

Cの値はちょうどその値です。 Cには "null"というようなものはありませんが、代わりに単純にあなたが値を解釈する方法です。あなたの場合、値を格納する方法を決定する必要があります。これは、空であると解釈されます。すべての実数が等しく有効であれば、何かが "空"であるかどうかを示すために_秒の値が必要です。 – Qix

答えて

3

あなたにはオッズのカウンターとエヴェンスのカウンターが必要です。

int oddcount = 0; 
int evencount = 0; 

数値が偶数であると判断した場合は、このカウンタを使用して配列のどこに移動する必要があるかを知ることができます。たとえば、次の

evencountはあなたにも、番号の数を与えるだけでなく、配列のインデックスはゼロから始まり以来、それはまた次の偶数番号の位置で何を伝えていることに注意してください
if (whole[i] % 2 == 0) { 
    evens[evencount] = whole[i]; 
    evencount++; 
} 

次に、入力された偶数番号と奇数番号の実際の数を使用するように、最後のforループを変更します。ゼロをチェックして、No even numbers suppliedのような特定のメッセージを印刷することさえできます。

また、入力番号を配列に保存するよう特に指定されていない限り、wholeは不要です。次のようにすることができます。

int input; 
for (i=0; i<10; i++) 
{ 
    scanf("%d", &input); 
    if (input %2 == 0) 
     /* ... */ 
    else 
     /* ... */ 
} 

最後に、コードをインデントする必要があります。インデントは、単にコードの前にスペースの数を増やしています(私が上記のifの中で行ったように)。コードの構造を明確にするため、コードをインデントすることは非常に重要です。詳細については、Importance of code indentationを参照してください。

2

インデックスを表す2つの変数、奇数を加算するために使用する変数、偶数を加算するその他の変数を持つ方が良いです。次に、冗長データを持たない2つの配列を持ちます。

int evensIndex = 0; 
int oddsIndex = 0; 
for (i=0; i<10; i++) 
{ 
    scanf("%d", &whole[i]); 

    if (whole[i] %2 == 0) 
    { 
     evens[evensIndex] = whole[i]; 
     evensIndex++; 
    } 
    else 
    { 
     odds[oddsIndex] = whole[i]; 
     oddsIndex++; 
    } 
} 
0
int main() 
{ 
int evens[10], temp, odds[10], i; 
int oddIndex = 0, evenIndex = 0; 

printf("Enter 10 integer(/whole) numbers\n"); 
for (i=0; i<10; i++) 
{ 
    scanf("%d", &temp); 
    if(temp%2) 
     odd[oddIndex++]=temp; 
    else 
     even[evenIdex++]=temp; 
} 

printf("Your even numbers are the following:\n"); 
for (i=0; i<10; i++) 
    printf("%d\n", evens[i]); 

printf("Your odd numbers are the following:\n"); 
for (i=0; i<10; i++) 
    printf("%d\n", odds[i]); 

return 0; 
} 
関連する問題