C Массивы и непрерывные списки - PullRequest
1 голос
/ 03 марта 2009

/ edit: спасибо за помощь до сих пор, однако у меня нет ни одного решения, чтобы взять ввод образца и дать вывод образца. Мое описание не самое ясное, извините.

У меня есть массив, состоящий из двоичных данных. То, что я хочу сделать, это определить, как долго каждый непрерывный сегмент 1 или 0.

Скажите, у меня есть эти данные:

0111010001110

В массиве binaryArray, который мне нужно перевести на:

0100110

хранится в nwArray, где 0 представляет узкое (длиной менее 3 цифр) и 1 представляет широкое (длиной> 3 цифры). Меня интересует не двоичное значение, а длина каждого компонента. Я не уверен, имеет ли это объяснение смысл.

Это то, что у меня есть; это не работает, я понимаю почему, но я не могу придумать хорошее решение.

for(x=0;x<1000;x++){
    if(binaryArray[x]==binaryArray[x+1]){
        count++;
        if(count>=3){
            nwArray[y]=1;
            y++;
            count=0;
        }
    }else{
        if(barcodeArray[x]){
            nwArray[y]=0;
        }
    }
}

Ответы [ 3 ]

5 голосов
/ 03 марта 2009

Это делает это?

int count = 0;
for (x=0; x<1000;x++)
{
    if (binaryArray[x] != binaryArray[x+1]) 
    {
        if (count < 3)
           nwArray[y]=0;
        else 
           nwArray[y]=1;

        y++;
        count = 0;
    }
    else
        count++;
}
3 голосов
/ 03 марта 2009

Одна из ваших проблем заключается в том, что вы сравниваете счет с 3 слишком рано. Подождите, пока не увидите изменения в битовом потоке. Попробуйте цикл while, пока бит не перевернется, затем сравните счет.

0 голосов
/ 03 марта 2009

Изменено @ MikeW ответ :

int count = 0;
int nwSize = 0;    
const int ilast = SIZEOF(binaryArray) - 1;
for (int i = 0; i <= ilast; ++i)
  if (i == ilast || binaryArray[i] != binaryArray[i+1]) {
    nwArray[nwSize++] = (count > 1); /* true for '1110'; false for '110' */
    count = 0;
  }
  else
    ++count;
assert(count == 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...