2015-12-15 2 views
-1

Я пытаюсь скопировать один массив («in»), содержащий 160 элементов в другой массив («temp»), который имеет 16 элементов, используемых для цикла. В каждом раунде в цикле одна строка будет скопирован из массива из 160 элементов в новый массив, который имеет 16 элементов. Я использую этот, но это неверно.Копирование содержимого массива по строкам

for (int i = 0; i < ROWSS; i++) 
    { 

    std::array<unsigned char,16> temp = in[i*16]; 

функция:

InputDifferences(unsigned char * in, unsigned char * result,unsigned char * xi) 

{
unsigned char yi[16]; unsigned char temp[160]; int index;

/for(int x=0 ; x<ROWS ; x++) 
{ 
    //unsigned char temp[160] = in[x*16]; 
//std::array<unsigned char,160> B = in; 
    for (int i = 0; i < ROWSS; i++) 
    { 


    std::cout << "\nTables:\n"; 
    for(int a = 1; a < ROUND; a++) 
    { 
     std::cout << "\nROUNDS:\n"; 
     for (int j = 0; j < COLS; j++) 
     { 
      yi[i*COLS+j] = xi[i*COLS+j]^(a); //x (xor) 1,2,3.. and find input differences 
      index = temp[i*COLS+j]^temp[yi[i*COLS+j]]; // s(x) (xor) s(y) find output differences 
      result[a*16+index]++; // to find how many appears in each box 
     } 

    } 
    std::cout << "\nTry :" << i; 
    showMatrix2(result); 
    } 

//}}

результат будет как этот

for i =0 temp[16] = in[0..15] 
for i = 1 temp[16] = in[16..31] 

и т. Д. Не могли бы вы мне помочь?

+0

'temp [16]' выходит за пределы диапазона, так что не ожидайте этого! – MikeCAT

+0

Да, я знаю, как это можно сделать? Знаете ли вы способ, не используя другие петли? – user5670635

+0

@Sossenbinder Я не могу использовать два массива 2d, потому что вся программа работает в [160], и это одномерный знак без знака . Я не могу использовать любые другие петли, потому что этот цикл имеет внутренние петли – user5670635

ответ

0

Try:

//declare temp[16] outside for loop 
for(int i=0;i<ROWSS;++i){ 
    int j = 0; 
    while(j<16) temp[j] = in[j+i*16]; 

//the rest of your code 
} 

обратите внимание, что если вы сделаете новый массив каждый раз, когда цикл в то время как выполняет, температура [] будет перезаписана с следующими 16 номерами.

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