Задачка на С++ про строки
Всем привет, сейчас решаю задачу но она проходит только 8/14 тестов. Я просто не могу понять где моя ошибка( Может кто-то из опытных программистов сможет найти случаи где программа работает не коректно. Ссылку на тестирующею систему к сожалению дать не могу, она закрыта. Файлов с тестами там тоже нет
Дано выражение одно из следующих видов: «A+B», «A-B» или «A*B», где A и B - целые числа от 0 до 109. Определите значение этого выражения.
ВХОДНЫЕ ДАННЫЕ
Программа получает на вход одну строку описанного вида.
ВЫХОДНЫЕ ДАННЫЕ
Программа должна вывести целое число — результат вычисления данного выражения.
ПРИМЕР
ввод 2*2 вывод 4
ввод 100-101 вывод
#include <iostream>
#include <string>
using namespace std;
long long perevod(string n) { // перевод строки в число
int temp = 0;
int i = 0;
while (n[i] >= 0x30 && n[i] <= 0x39)
{
temp = temp + (n[i] & 0x0F);
temp = temp * 10;
i++;
}
temp = temp / 10;
return(temp);
}
int main() {
char znak;
znak = 0;
string s, chislo_1, chislo_2;
getline(cin, s);
int i = 0;
while (isalnum(s[i])) //беру первое число
{
chislo_1.push_back(s[i]);
i++;
}
i = 1;
s.erase(0, chislo_1.size());
while (isalnum(s[i])) //беру второе число
{
chislo_2.push_back(s[i]);
i++;
}
znak = s[0]; //беру знак
if (znak == '+') // в зависимости от знака делаю действие
{
cout << perevod(chislo_1) + perevod(chislo_2);
}
else if (znak == '-')
{
cout << perevod(chislo_1) - perevod(chislo_2);
}
else
{
cout << perevod(chislo_1) * perevod(chislo_2);
}
}
Ответы (1 шт):
Вот уж воистину, зачем просто, если можно сложно...
#include <iostream>
using namespace std;
int main()
{
long long int a, b;
char c;
cin >> a >> c >> b;
switch(c)
{
case '+': a+=b; break;
case '-': a-=b; break;
case '*': a*=b; break;
}
cout << a << endl;
}