Код, вставленный здесь
Привет ТАК. Я только что написал свою первую полусущественную программу для ПК, написанную исключительно для удовольствия / для решения проблемы, не имея задачи в классе программирования. Я уверен, что многие из вас помнят первую значительную программу, которую вы написали для развлечения.
Моя проблема в том, что я не удовлетворен эффективностью моего кода. Я не уверен, является ли это ограничением ввода / вывода моего терминала или самого моего кода, но, похоже, он работает довольно медленно для разрешений ЦАП 8 бит или выше.
Я не прокомментировал код, поэтому вот объяснение проблемы, которую я пытался решить с помощью этой программы:
Выходное напряжение ЦАП определяется двоичным числом, имеющим биты Bn, Bn-1 ... B0 и натурное напряжение.
Выходное напряжение имеет уравнение вида:
Vo = G( (1/(2^(0)))*(Bn) + (1/2^(0+1))*(Bn-1) + ... + (1/2^(0+n))*(B0) )
Где G - это коэффициент усиления, при котором на входе всех битов устанавливается высокое значение напряжения полной шкалы.
Если вы запустите код, идея будет вполне понятна.
Моя проблема в том, что я думаю, что то, что я вывожу на консоль, может быть достигнуто гораздо менее чем в 108 строках C ++. Да, это легко сделать, предварительно рассчитав шаговое напряжение и просто отобразив таблицу с помощью приращения, но «самообеспечение», которое я имею для этой программы, заключается в том, что на некотором уровне она выполняет вычисление последовательностей, описанное выше для каждого представленного двоичного входного сигнала. .
Я не пытаюсь сойти с ума с этим требованием. Я хотел бы, чтобы эта программа доказала природу формулы, которую она в настоящее время делает. Что я ищу, так это несколько советов о том, как сделать мою реализацию в целом более чистой и эффективной.