タイトル1508:文字列を整数に変換

1518 ワード

タイトルの説明:
文字列を整数に変換するには、文字列を使用して整数を変換できないライブラリ関数が必要です.
入力:
入力には、複数のテストサンプルが含まれる場合があります.
各テストケースについて、整数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
****************************************************************/