ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
17 июля
45659 Топик полностью
Max_QNX (05.12.2005 11:22, просмотров: 1) ответил -=Max_Fly=- на если ждать невмоготу ;)
исходник для PC потому не шибко оптимально в смысле float. :). [pre] int CMX=0; int CDV=1; float max=999; float N=0; float delta=0.001; float d; N=(frq1)/(frq2); if (N>20) { N=20; response=1; } if (N<0.02) { N=0.02; response=2; } // convert do { if ((((float)CMX/(float)CDV))<N) { CMX++; if (CMX==max) { break; } } else { CDV++; if (CDV==max) { break; } } if((N-((float)CMX/(float)CDV))>0) { d=((float)CMX/(float)CDV); d=N-d; } else { d=((float)CMX/(float)CDV); d=d-N; } } while (d>delta); [\pre] делится частоты. если ограничения на максимальную-минимальную нет - условия убрать. Затем если дробь меньше - добавить числителя - если больше - знаменателя. Бегать до тех пор пока не упрёмся в максимум умножителя-делителя либо достигнем точности delta.