加減算の計算
キーボードで100以内の正の整数の加算・減算式を入力し、プログラム出力演算結果文字列を作成してください.
文字列は、「オペランド1演算子オペランド2」、「オペランド」と「演算子」の間にスペースで区切られた形式で入力されます.
補足:
1.オペランドは正の整数であり、計算結果がオーバーフローした場合を考慮する必要はない.
2.入力式フォーマットが間違っている場合、出力結果は「0」となります.
要求実装関数:
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);
【入力】pInputStr:入力文字列
lInputLen:文字列の長さを入力
【出力】pOutputStr:文字列を出力して、空間はすでに開いて、入力文字列と同じ長さ;
【注意】この関数機能アルゴリズムを完了するだけで、中間にIOの入出力は必要ありません
例
入力:「4+7」出力:「11」
入力:「4-7」出力:「-3」
入力:9++7出力:0注意:フォーマットエラー
文字列は、「オペランド1演算子オペランド2」、「オペランド」と「演算子」の間にスペースで区切られた形式で入力されます.
補足:
1.オペランドは正の整数であり、計算結果がオーバーフローした場合を考慮する必要はない.
2.入力式フォーマットが間違っている場合、出力結果は「0」となります.
要求実装関数:
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);
【入力】pInputStr:入力文字列
lInputLen:文字列の長さを入力
【出力】pOutputStr:文字列を出力して、空間はすでに開いて、入力文字列と同じ長さ;
【注意】この関数機能アルゴリズムを完了するだけで、中間にIOの入出力は必要ありません
例
入力:「4+7」出力:「11」
入力:「4-7」出力:「-3」
入力:9++7出力:0注意:フォーマットエラー
#include <iostream>
#include <string>
#include <vector>
using namespace std;
/*
100 、 , 。
:“ 1 2”,“ ” “ ” 。
:
1. , 。
2. , “0”。
:
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);
【 】 pInputStr:
lInputLen:
【 】 pOutputStr: , , ;
【 】 , IO
:“4 + 7” :“11”
:“4 - 7” :“-3”
:“9 ++ 7” :“0” :
*/
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr)
{
int i;
int n;
n=0;
for(i=0;pInputStr[i]!=' ';i++)
{
if(pInputStr[i]=='\0'||isdigit(pInputStr[i])==0)
{
pOutputStr[0]='0';
pOutputStr[1]='\0';
return;
}
else
{
n=n*10+pInputStr[i]-'0';
}
}
if(i==0)
{
pOutputStr[0]='0';
pOutputStr[1]='\0';
return;
}
char q;
i++;
if(pInputStr[i]!='+'&&pInputStr[i]!='-')
{
pOutputStr[0]='0';
pOutputStr[1]='\0';
return;
}
else
{
q=pInputStr[i];
}
i++;
if(pInputStr[i]!=' ')
{
pOutputStr[0]='0';
pOutputStr[1]='\0';
return;
}
i++;
int k;
k=0;
for(;pInputStr[i]!='\0';i++)
{
if(isdigit(pInputStr[i])==0)
{
pOutputStr[0]='0';
pOutputStr[1]='\0';
return;
}
else
{
k=k*10+pInputStr[i]-'0';
}
}
int r;
r=(q=='+')?(n+k):(n-k);
i=0;
if(r<0)
{
pOutputStr[i++]='-';
r=-r;
}
int p[3];
p[0]=r/100;
p[1]=(r%100)/10;
p[2]=(r%100)%10;
if(p[0]==0&&p[1]==0)
pOutputStr[i++]=p[2]+'0';
else if(p[0]==0)
{
pOutputStr[i++]=p[1]+'0';
pOutputStr[i++]=p[2]+'0';
}
else
{
pOutputStr[i++]=p[0]+'0';
pOutputStr[i++]=p[1]+'0';
pOutputStr[i++]=p[2]+'0';
}
pOutputStr[i]='\0';
}
int main(void)
{
char* pInputStr=new char[10];
char* pOutputStr=new char[10];
int i;
for(i=0;i<100;i++)
{
int j=rand()%100;
int p=rand()%100;
int q=rand()%2;
pInputStr[0]='0'+j/10;
pInputStr[1]='0'+j%10;
pInputStr[2]=' ';
pInputStr[3]=((q>0)?'+':'-');
pInputStr[4]=' ';
pInputStr[5]='0'+p/10;
pInputStr[6]='0'+p%10;
pInputStr[7]='\0';
cout<<pInputStr<<endl;
arithmetic(pInputStr,10,pOutputStr);
cout<<pOutputStr<<endl;
}
pInputStr="4 + 7";
arithmetic(pInputStr,10,pOutputStr);
cout<<pOutputStr<<endl;
pInputStr="4 - 7";
arithmetic(pInputStr,10,pOutputStr);
cout<<pOutputStr<<endl;
pInputStr="9 ++ 7";
arithmetic(pInputStr,10,pOutputStr);
cout<<pOutputStr<<endl;
pInputStr="100 +100";
arithmetic(pInputStr,10,pOutputStr);
cout<<pOutputStr<<endl;
pInputStr="100 + 100 ";
arithmetic(pInputStr,10,pOutputStr);
cout<<pOutputStr<<endl;
pInputStr=" 100 + 100";
arithmetic(pInputStr,10,pOutputStr);
cout<<pOutputStr<<endl;
pInputStr="1*0 + 100";
arithmetic(pInputStr,10,pOutputStr);
cout<<pOutputStr<<endl;
system("pause");
return 0;
}