Я запускаю генетическое программирование с использованием c ++, мы нашли решение в зависимости от того, как некоторые ворота расположены последовательно, эти ворота выбираются из постоянного списка библиотеки ворот в моей программе. В функции inorder был вызван переключатель для распечатки тех ворот, которые использовались для получения решения. Теперь я хочу назначить стоимость для каждого из ворот и напечатать их СУММУ, как ворота распечатаны ранее. я могу все еще использовать случай переключателя для этого? это пример
switch1 (gateLibrary)
{
case -1:cout<<"*";break;
case 0:cout<<"a";break;
case 1:cout<<"b";break;
case 2:cout<<"c";break;
.
.
.
case n:cout<<"z";break;
}
example output: a*b*c
Этот код распечатывает ворота, выбранные из стека gateLibrary. например a * b * c, если a, b и c выполняются в их случаях. Теперь, если a имеет стоимость 5, b имеет стоимость 3, а c имеет стоимость 2, и я хочу использовать другой переключатель, чтобы напечатать общую стоимость как 10, возможно ли это? Я попробовал что-то вроде этого для точного выше решения.
switch2 (gateLibrary)
{
case -1:cout<<"+";break;
case 0:cout<<"5";break;
case 1:cout<<"3";break;
case 2:cout<<"2";break;
.
.
.
case n:cout<<"n";break;
}
example output: 5+3+2 //but i need sum as 10 to be printed here
любая помощь будет оценена с использованием чего-либо подходящего, не обязательно переключателя. Спасибо
В библиотеке c ++ нет синтаксического анализатора выражений, поэтому вы не можете взять строку «5 + 3 + 2» или что-то еще и получить 10 без разбора строки самостоятельно. Я думаю, вы также неправильно понимаете, что метки дел могут иметь произвольные значения, поэтому вы можете просто сделать так, чтобы каждая метка имела желаемую «стоимость» для каждого «ворот».
Других решений пока нет …