Строка, числа и скобки
![alt text][1]На вход подается что-то типа: (12 32(32 12)).
Мне считать скобки перед числом, увидев число, выполнить: res=a[i]*(0.5)^(b[i])
, где a[i]
— это какое-то число из строки ввода, b[i]
— скобочный итог к моменту, и соответсвенно суммировать такие результаты до конца строки.
Вот пример моей программы, но она возводит в степени не числа, а цифры (т.е. делит каждое число на цифры):
using namespace std;
int main() {
string str, st;
int index = 0, k = 0, ind = 0, index1 = 0,s = 0;
long double res = 0;
char chr;
getline(cin, str);
while (index < str.length())
{
chr = str[index];
if ((chr == '1') || (chr == '2') || (chr == '3') || (chr == '4') || (chr == '5') || (chr == '6') || (chr == '7') || (chr == '8') || (chr == '9') ||(chr=='0') )
{
while ((str[index] == '1') || (str[index] == '2') || (str[index] == '3') || (str[index] == '4') || (str[index] == '5') || (str[index] == '6') || (str[index] == '7') || (str[index] == '8') || (str[index] == '9')|| (str[index] == '0'))
{
st[ind] = str[index];
index1 = index;
ind++;
index++;
}
k = atoi(st.c_str()); cout<<"k="<<k<<" ";
res = res + k*pow(0.5, s); cout<<"res"<<res<<endl;
index = index1;
ind = 0;
}
chr = str[index];
if (chr == '(')
{
s = s + 1;
}
if (chr == ')')
{
s = s - 1;
}
st.clear();
std::cout << (st.empty() ? "YES" : "NO") << endl;
index++;
}
cout << round(res * 100) / 100.;
system("pause");
}
Пишет, что строка st, очищается, а на тестах иногда добовляет в конец цифры из предедущей строки.
Например (3332 554) выдает второе число как 5542, вместо 554.