タイトル1508:文字列を整数に変換
1518 ワード
タイトルの説明:
文字列を整数に変換するには、文字列を使用して整数を変換できないライブラリ関数が必要です.
入力:
入力には、複数のテストサンプルが含まれる場合があります.
各テストケースについて、整数n(1<=n<=1億円)を表す合法的または不正な文字列として入力します.
出力:
各テストケースに対応し、
正規の文字列(すなわち整数を表す)として入力すると、この整数が出力されます.
不正な文字列として入力すると、「My God」が出力されます.
サンプル入力:
5
-5
+8
サンプル出力:
5
-5
8
文字列を整数に変換するには、文字列を使用して整数を変換できないライブラリ関数が必要です.
入力:
入力には、複数のテストサンプルが含まれる場合があります.
各テストケースについて、整数n(1<=n<=1億円)を表す合法的または不正な文字列として入力します.
出力:
各テストケースに対応し、
正規の文字列(すなわち整数を表す)として入力すると、この整数が出力されます.
不正な文字列として入力すると、「My God」が出力されます.
サンプル入力:
5
-5
+8
サンプル出力:
5
-5
8
#include<iostream>
#include<string>
using namespace std;
bool isLegal(string str)
{
int start=0;
if(str[0]=='+'||str[0]=='-')
start=1;
for(int i=start;i<str.size();i++)
if(str[i]>'9'||str[i]<'0')
return false;
return true;
}
int main()
{
string str;
while(cin>>str)
{
int temp=0;
int start=0;
int sum=0;
if(isLegal(str))
{
if(str[0]=='-'){temp=-1;start=1;}
else if(str[0]=='+'){temp=1;start=1;}
else {temp=1;start=0;}
for(int i=start;i<str.size();i++)
{
sum=sum*10+str[i]-'0';
}
sum*=temp;
cout<<sum<<endl;
}else
{
cout<<"My God"<<endl;
}
}
}
/**************************************************************
Problem: 1508
User: hndxztf
Language: C++
Result: Accepted
Time:50 ms
Memory:1520 kb
****************************************************************/