Решаю задачу по нахождению максимального значения арифметического c выражения. Но у меня возникла проблема с вводом данных для выражения, поскольку символы не фиксированы.
Формат ввода:
- Единственная строка ввода содержит строка s длины 2n + 1 для некоторого n с символами s0, s1,. . . , s2n.
- Каждый символ в четной позиции s является di git (то есть целым числом от 0 до 9)
- , в то время как каждый символ в нечетной позиции является одним из три операции из {+, -, *}.
Но мне нужны цифры и символы в разных массивах (цифры в массиве int и операции в массиве char) для моего решения.
Вот как я реализовал изначально:
string s;
std::cin >> s;
n=s.size();
cout<<"n= "<<n<<endl;
vector<long long> no;
vector<char> ops;
for(int i = 0; i <n; i++)
{
if(i%2==0)
{
no.push_back(s[i]);
}
else{
ops.push_back(s[i]);
}
}
Но я не могу получить требуемый ввод, вместо этого получаю следующее:
INPUT:
5-8+7*4-8+9
OUTPUT:
n = 11
no[0] = 53
no[1] = 56
no[2] = 55
no[3] = 52
no[4] = 56
no[5] = 57
ops[0] = -
ops[1] = +
ops[2] = *
ops[3] = -
ops[4] = +
Я также пробовал еще одно решение:
vector<long long> no;
vector<char> ops;
int i=0;
while(cin)
{
cout<<"i= "<<i<<endl;
if(i%2==0)
{
int s;
cin>>s;
if(s=='\0')
{
exit();
}
cout<<"s= "<<s<<endl;
no.push_back((int)s);
cout<<"no= "<<no[i/2]<<endl;
}
else
{
char s;
cin>>s;
if(s=='\0')
{
exit();
}
cout<<"s= "<<s<<endl;
ops.push_back(s);
cout<<"ops= "<<ops[(i-1)/2]<<endl;
}
i++;
}
Но это переходит в бесконечное l oop.
Пожалуйста, помогите мне