Я хочу, чтобы решить этот тип выражений после чтения из подачи с старшинства
2 + 3/5 * 9 + 3-4
Вот мой код для попытки решить эту задачу как я могу решить эту проблемуC++ Внеочередные с помощью подачи
while (!inputFile.eof()) {
getline(inputFile, read);
cout << read << endl;
for (int i = 0; i < read.length(); i++) {
if (read[i] == '/') {
result = static_cast<float>(read[i - 1])/static_cast<float>(read[i + 1]);
read[i - 1] = result;
for (int j = i; j < read.length() - 2; j++) {
read[j] = read[j + 2];
}
read[read.length() - 1] = '\0';
read[read.length() - 2] = '\0';
}
}
cout << result << endl;
cout << read << endl;
}
Вы оценивающих операнды как поплавки, но потом хранить его обратно в строку как символ, теряющий любую точность. Вы оцениваете операнды на основе их ascii-представления, а не фактического значения. Этот код предполагает, что каждый операнд имеет длину всего один символ. Вы показываете только разделение, но при реализации умножения вы, скорее всего, получите значения больше 9 и, следовательно, будут иметь проблемы. Я думаю, вы должны пересмотреть свое решение, и я советую не пытаться делать все это в одной строке. – vu1p3n0x
Я не уверен, что понимаю, что вы пытаетесь сделать. Оценка выражений - это не тривиальная задача. [Это] (http://www.stroustrup.com/3rd_code.html) может помочь вам (посмотрите на Desk Calculator). – ZDF