2016-10-19 3 views
-1

Я запускаю генетическое программирование с использованием C++, мы нашли решение в зависимости от того, как некоторые ряды размещаются последовательно, эти ворота выбираются из постоянного списка библиотеки ворот внутри моя программа. Коммутатор был вызван внутри встроенной функции, чтобы распечатать эти ворота, используемые для получения решения. Теперь я хочу назначить стоимость каждому из ворот и распечатать их СУММ, как ранее распечатывают ворота. Могу ли я по-прежнему использовать кейс для этого? это примерМожно переключить регистр в C++, чтобы суммировать результаты многих выборов

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, и я хочу использовать другой переключатель, чтобы распечатать общую стоимость, поскольку это возможно? Я попробовал что-то подобное для точного выше решения.

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 

любая помощь будет оценена с использованием любого подходящего не обязательно переключателя. Спасибо

+0

Должны ли мы понять, что в ваших примерах у вас есть код в каком-то цикле 'while' или другой конструкции, который передает первую« gateLibrary = 0', затем «gateLibrary = 1' и т. Д.? –

+0

Таблица поиска или таблицы поиска. Вы можете создать таблицу * mapping * для сопоставления целых чисел с буквами (простой массив) или вы можете сделать что-то более сложное, например, с помощью 'std :: map'. –

ответ

0

В библиотеке C++ не существует синтаксического анализатора выражения, поэтому вы не можете взять строку «5 + 3 + 2» или что-то еще, и в итоге получите 10 без разбора строки. Я думаю, вы также неправильно понимаете, что метки случаев могут иметь произвольные значения, поэтому вы можете просто сделать для каждой метки «стоимость», которую вы хотите для каждого «затвора».