您的位置:首页 > 其它

UVA-465 Overflow

2016-07-15 21:02 453 查看
2016-07-15


UVA - 465 Overflow

题目大意:输入两个整数进行加法或乘法,判断这两个整数以及运算结果是否会大于 int 型的范围。

解题思路:输入的整数可能会很大所以用字符串读入,用三个字符串读入一行,方便输出,将 str1 与 str2 转为浮点型后判断是否大于 int 型能表示的最大值。

注意:虽然 double 也不一定能准确表示输入的数,但比起 int 已经足够。
#include <iostream>
#include <cstring>
using namespace std;

int Max = 2147483647;
char str1[100000];
char str2[100000];
char str3[100000];
double a;
double b;
int main() {
while ( cin >> str1 >> str2 >> str3 ) {
a = 0;
b = 0;
for (int i = 0; i < strlen(str1); i++)
a = a * 10.0 + str1[i] - '0';
for (int i = 0; i < strlen(str3); i++)
b = b * 10.0 + str3[i] - '0';
cout << str1 << " " << str2 << " " << str3 << endl;
if ( a > Max )    cout << "first number too big" << endl;
if ( b > Max )    cout << "second number too big" << endl;
if ( strcmp(str2,"+") == 0 )
if ( (a+b) > Max )    cout << "result too big" << endl;
if ( strcmp(str2,"*") == 0 )
if ( (a*b) > Max )    cout << "result too big" << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: