2015-06-02 61 views
3

兩個元件我有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 

我想通過陣列運行並採取下兩個值,並放置在包數組等等,直到數組中的最後一個元素。

回答

2

您可以通過大陣運行,並選擇值的小陣列中進行復制,resseting 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)); 
} 
2

已經有很多有趣的解決辦法發佈here.Yet我想補充一個。你也可以使用異或運算符。 c=c^1翻轉的Ç1.當

介於0和c=0,c^1=1並且當c=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; 
} 
值希望它helps.Happy編碼!!