2015-06-02 3 views
3

два элемента У меня есть массив из 10 случайных элементов, сгенерированный как это:Наполнение массив из большого массива, в то время

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

        file[j] = rand(); 

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

Затем я генерировать новый массив с 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

Уже было много интересных решений, размещенных здесь. Я хотел бы добавить еще один. Вы также можете использовать оператор xor. c=c^1 переворачивает значение с между 0 и 1.Когда 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 кодирования !!

Смежные вопросы