Вы не можете передать формулу в качестве аргумента вашей программы.Ваш параметр arg[1]
является строкой, когда вы вызываете atoi
, вы делаете только преобразование чисел до первого числового символа монахиня, поэтому в вашем случае он преобразовал символ '4' вашей строки "4/1+x*x"
и остановилсяпреобразование в '/'.
Если вы хотите использовать формулу, вы должны написать интерпретатор, который анализирует строку, строит дерево оценки и выполняет замену значений переменных.Что-то довольно сложное, вероятно, не несколько сотен строк кода.Вероятно, проще использовать формулу в исходном коде и соответствующим образом перекомпилировать программу.Если это невозможно, перейдите на интерпретируемый язык, такой как perl, python, javascript, который реализует функцию eval
.