Цитата(Anjey_N @ Apr 14 2007, 17:24)

Есть два 10-разрядных двоичных слова, полученных после преобразований АЦП по двум аналоговым каналам.
Необходимо преобразовать 2-й код в 2-10 код и результат поместить в 8 злементный масив.
...
Подскажите, как лучше это написать на языке Си!
Первое, что вводит в ступор - это упоминание ДВУХ чисел, которые надо преобразовать.
И "ежику без сотового телефона" понятно, что если есть решение для одного числа, то для второго надо делать аналогично.
Так что дальше будем рассматривать задачу с одним числом.
Второе непонятное слово - "лучше". В каком смысле лучше?
Возможны варианты.
1) Самая короткая запись на Си (по количеству букв в тексте программы)
2) Программа, имеющая самый короткий код, пусть и медленная.
3) Программа, работающая быстро, пусть даже и с длинным кодом.
4) Некий вариант, промежуточный между п.2 и п3.
Не претендуя на истину в последней инстанции:
1) i=0; while(v) {array[i++]=v%10;v/=10; } // считается, что изначально массив нулевой
2) не уверен, но может что-то типа
i=0; while(v){v--;
loop: array[i]++;
if (array[i]==10){array[i++]=0; goto loop;}
else i=0;
}
3) возможно, это п1.
Ну, если совсем памяти навалом, то просто
array[0]= array_0[v];
array[1]= array_1[v];
array[2]= array_2[v];
array[3]= array_3[v];
Понятно, что массивы array_x надо сосчитать зааранее
4)
Я бы так написал
if(v>999){array[3]=1;v-=1000;}
while (v>99){array[2]++;v-=100;}
while (v>9){array[1]++;v-=10;}
array[0]=v;
P.S. Программы компилятором не проверял, так что возможны тараканы.