如何从空向量中删除记忆方向

时间:2016-08-04 13:56:23

标签: c memory vector directions

我开始进行C编程,我的英语不是最好的,所以我会尽力向自己解释一下......

我试图做一个生成随机数,对和奇数的程序,并将这些数字保存到两个不同的向量中......

所以看起来像这样

#include <stdio.h>
#include <stdlib.h>
#define ARRAYSIZE 6

void main()
{
    int randomNumber, position, pairVector[ARRAYSIZE], oddVector[ARRAYSIZE];
    srand(time(NULL)); 

    for (position = 0; position < ARRAYSIZE; position++)
    {
        randomNumber = rand() % 49 + 0;
        if (randomNumber % 2 == 0)
            pairVector[position] = randomNumber;
        else
            oddVector[position] = randomNumber;
    }

    // Loop to print all the pair random numbers 
    for (position = 0; position < ARRAYSIZE; position++)
    {
        if(pairVector[position] >= 0)
            printf("%d ", pairVector[position]);
    }
    // Separation of the pair and odd numbers
    printf("\n\n\n");

    // Loop to print all the odd random numbers 
    for (position = 0; position < ARRAYSIZE; position++)
    {
        if (oddVector[position] >= 0)
            printf("%d ", oddVector[position]);
    }
}

正如你所看到的,我有2个循环来打印对和奇数,这个数字印有2个循环,所以这里是我的问题......

在循环内的向量中没有条件&gt; = 0,我打印了一些内存方向(因为如果我的大小为6个整数但只有3个数字(对或奇数),则其他3个方向也被打印)...如果没有条件,我该怎么做才能从打印的矢量中删除这些方向?也许指针?

感谢您的建议并抱歉我的英语不好。

2 个答案:

答案 0 :(得分:1)

您可以将两个数组元素设置为0

for(position = 0; position < ARRAYSIZE; position++)
   pairVector[position] = 0;

为两个数组执行此操作,您的数组将填充0(零),然后使用rand数字填充数组,因此您将拥有类似

的内容

示例:24,22,58,0,0,0

当你想要打印输出数组时,只需要像

那样
for(position = 0; position < ARRAYSIZE; position++)
{
    if(pairVector[position] != 0)
         printf("%d ", pairVector[position]);
}

答案 1 :(得分:0)

由于你不知道阵列什么时候会被完全填满,我建议你做一个while循环直到两个阵列都被填满。

void main()
{
int randomNumber, position, pairVector[ARRAYSIZE], oddVector[ARRAYSIZE];
srand(time(NULL)); 
int pairIndex, oddIndex;
pairIndex = oddIndex = 0;  // you will increment them once you find a number for regarding array

while ((pairIndex < ARRAYSIZE) || (oddIndex < ARRAYSIZE) )
{
    randomNumber = rand() % 49 + 0;
    if (randomNumber % 2 == 0){
        if (pairIndex<ARRAYSIZE) 
           pairVector[pairIndex++] = randomNumber;
    }
    else{
        if (oddIndex<ARRAYSIZE) 
            oddVector[oddIndex++] = randomNumber;
    }
}

// Loop to print all the pair random numbers 
for (position = 0; position < ARRAYSIZE; position++)
{
    if(pairVector[position] >= 0)
        printf("%d ", pairVector[position]);
}
// Separation of the pair and odd numbers
printf("\n\n\n");

// Loop to print all the odd random numbers 
for (position = 0; position < ARRAYSIZE; position++)
{
    if (oddVector[position] >= 0)
        printf("%d ", oddVector[position]);
}
}

在你的方法中,循环只经历了6次,并且肯定一个或两个数组可能不完整。在上面的解决方案中,您将填充两个阵列,然后打印它们。