【问题标题】:Populating an array from a large array, two elements at a time从一个大数组中填充一个数组,一次两个元素
【发布时间】:2015-06-02 19:25:26
【问题描述】:

我有一个包含 10 个随机元素的数组,生成如下:

             for ( j = 0;j<10;j++)
                {

                    file[j] = rand();

                    printf("Element[%d] = %d\n", j, file[j] );                  
                }

然后我生成一个包含 2 个元素的新数组。数组的值取自上面的数组,并放入包含 2 个元素的数组中。就像下面的代码示例一样:

         for(i = packet_count, j = 0; j < 2; ++j, ++i)
            {
                    packet[j] = file[i] ;
                    ++packet_count ;
                    printf("\npacket: %d", packet[j]);

            }
                printf("\nTransmit the packet: %d Bytes", sizeof(packet));

输出如下图:

Telosb mote Timer start.
Element[0] = 36
Element[1] = 141
Element[2] = 66
Element[3] = 83
Element[4] = 144
Element[5] = 137
Element[6] = 142
Element[7] = 175
Element[8] = 188
Element[9] = 69

packet: 36
packet: 141
Transmit the packet: 2 Bytes

我想遍历数组并获取接下来的两个值并将它们放入数据包数组中,依此类推,直到数组中的最后一个元素。

【问题讨论】:

    标签: c arrays nesc


    【解决方案1】:

    你可以遍历大数组,在小数组中选择要复制的值,当j等于2时将其重置为零:

    j = 0;
    for(i = 0; i < 10; i++) {
      packet[j] = file[i];
      printf("\npacket: %d", packet[j]);
      j++;
      if(j == 2) { 
        j = 0;
        printf("\nTransmit the packet: %d Bytes", sizeof(packet));
      }
    }
    

    【讨论】:

      【解决方案2】:

      使用取模运算符。示例:

      for(i = 0; i < 10; ++i)
      {
          packet[i % 2] = file[i] ;
          printf("\npacket: %d", packet[i % 2]);
      
          if(i % 2)
              printf("\nTransmit the packet: %d Bytes", sizeof(packet));
      }
      

      【讨论】:

        【解决方案3】:

        这里已经发布了许多有趣的解决方案。但我想再添加一个。您也可以使用 xor 运算符。 c=c^1 在 0 和 1 之间翻转 c 的值。当 c=0,c^1=1c=1,c^1=0.

        int i,c=0;
        for(i=0;i<10;i++)
        {
             packet[c] = file[i];         
             printf("\npacket: %d", packet[c]);
             if(c==1)
                 printf("\nTransmit the packet: %d Bytes", sizeof(packet));
             c=c^1;
        }
        

        希望对您有所帮助。祝您编码愉快!!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-10-12
          • 1970-01-01
          • 2013-03-16
          • 2011-07-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多