文字列の減算
1583 ワード
説明:
キーボードで100以内の正の整数の加算・減算式を入力し、プログラム出力演算結果文字列を作成してください.
文字列は、「オペランド1演算子オペランド2」、「オペランド」と「演算子」の間にスペースで区切られた形式で入力されます.
補足:
1.オペランドは正の整数であり、計算結果がオーバーフローした場合を考慮する必要はない.
2.入力式フォーマットが間違っている場合、出力結果は「0」となります.
コード:
キーボードで100以内の正の整数の加算・減算式を入力し、プログラム出力演算結果文字列を作成してください.
文字列は、「オペランド1演算子オペランド2」、「オペランド」と「演算子」の間にスペースで区切られた形式で入力されます.
補足:
1.オペランドは正の整数であり、計算結果がオーバーフローした場合を考慮する必要はない.
2.入力式フォーマットが間違っている場合、出力結果は「0」となります.
コード:
#include
#include
#include
using namespace std;
void stringArithmetic(const char *s1, long l, char *s2)
{
int leftNum = 0,
righNum = 0;
int i = 0,
j = 0;
while (s1[i] >= '0'&&s1[i] <= '9')
{
leftNum = leftNum * 10 + (s1[i] - '0');
i++;
if (i > l)
{
return ;
}
}
if (s1[i] != ' ' || i >= l)
return;
else
i++;
char op;
if (s1[i] == '+' || s1[i] == '-')
{
op = s1[i];
i++;
}
else
return;
if (s1[i] != ' ' || i >= l)
return;
else
{
++i;
}
while (s1[i] >= '0'&&s1[i] <= '9')
{
righNum = righNum * 10 + (s1[i] - '0');
++i;
if (i >= l)
return;
}
int result = 0;
if (op == '+')
result = leftNum + righNum;
if (op == '-')
result = leftNum - righNum;
if (result < 0)
{
result = -result;
s2[j++] = '-';
}
_itoa(result, s2 + j, 10);
}
void print(char *c)
{
char * p = c;
while (p && *p != 0)
{
cout << *p;
p++;
}
}
int main()
{
char *s1 = "1 + 1",
s2[30] = { 0 };
//cin >> s1;
stringArithmetic(s1, strlen(s1)+1, s2);
cout << s1 << " = " << s2 << endl;
//print(s2);
}