zoukankan      html  css  js  c++  java
  • 整数加法

    题目描述

    请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error

    输入描述:

    输入为一行,包含两个字符串,字符串的长度在[1,100]。

    输出描述:

    输出为一行。合法情况输出相加结果,非法情况输出error
    示例1

    输入

    123 123
    abd 123
    

    输出

    246
    Error
    /*实现两个大整数相加,因为用int和long都不能满足(溢出)*/
    #include <iostream>
    #include <cstring>
    #include <stack>
    #include<string>
    using namespace std;
     
    int isnum(string str)
    {
      for (int i = 0; i < str.size(); i++)
      {
          if (!isdigit(str[i])) //判断是否有非数字的元素
          {
              cout<<"error"<<endl;
              return 0;
          }
      }
        return 1;
    }
     
    int main()
    {
    	string a,b;
    	while (cin >> a >> b)
    	{
    		int sum = 0;
    		int n = a.length()-1;
    		int m = b.length()-1;
    		stack<int> istack;
    		int flag = 0;
    		if (isnum(a) && isnum(b))
    		{
    			while (m >= 0 && n >= 0)
    			{
    				sum = (a[n--] - '0') + (b[m--] - '0') + flag;//字符串从后往前相加,跟正常的加法计算一样,flag存放的低位的进位数
    				flag = sum / 10;//做进位处理,如果两个数相加超过10就把十位的数字存在flag
    				istack.push(sum % 10);//把结果的个位数存入栈中
    			}
    			if (n >= 0)//如果字符串b结束字符串a还未结束
    			{
    				sum = (a[n--] - '0') + flag;
    				flag = sum / 10;
    				istack.push(sum % 10);
    			}
    			if (m >= 0)//如果字符串a结束字符串b还未结束
    			{
    				sum = (b[m--] - '0') + flag;
    				flag = sum / 10;
    				istack.push(sum % 10);
    			}
                if(m<0&&n<0&&flag>0)
                {
                    istack.push(flag);
                }
                
    			while (!istack.empty())
    			{
    				cout << istack.top();
    				istack.pop();
    			}
    			cout << endl;
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Pandas 合并,连接,连接和比较
    根据条件在Pandas DataFrame中选择行
    pandas DataFrame.where() 检查一个或多个条件的数据帧,并相应地返回结果
    获取包含给定子字符串的Pandas DataFrame中的所有行
    Pandas Series.str.contains
    Python | 查找给定字符串中字符的位置
    Python中的Enumerate()
    Python –遍历NumPy中的列
    Boost 编译
    opencv 提取RGB并用cocos2d-x 纹理方式显示
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/9775143.html
Copyright © 2011-2022 走看看