zoukankan      html  css  js  c++  java
  • 九度OJ 1010 A+B

    题目链接:http://ac.jobdu.com/problem.php?pid=1010


    题目分析:

    先写一个函数将输入的数字单词转化为对应的数字,在计算值的时候调用该函数。

    主要的算法在于对于输入字符串的逻辑判断,即:输入几个数字单词,什么时候打印值。

    我的设计思想是:首先读入一个数字单词,然后读入下一个输入的字符串(中间判断空格在这里就不说了),判断先一个字符串是加号还是数字单词。是加号的话,继续输入字符串,那么这个必然是数字单词,再继续输入,判断是等于号还是数字单词,这里两种情况结果就都可以输出了;第一个数字单词之后如果依然是数字单词的话,那么继续输入,必然是加号,在进行上面加号之后的判断,依然有两种情况的输出。最后再判别一下都是0的退出情况。


    源代码:

    #include <iostream>
    #include <string>
    #include <stdio.h>
    using namespace std;
    
    int toInteger(string A)
    {
    	if(A=="one")
    		return 1;
    	else if(A=="two")
    		return 2;
    	else if(A=="three")
    		return 3;
    	else if(A=="four")
    		return 4;
    	else if(A=="five")
    		return 5;
    	else if(A=="six")
    		return 6;
    	else if(A=="seven")
    		return 7;
    	else if(A=="eight")
    		return 8;
    	else if(A=="nine")
    		return 9;
    	else if(A=="zero")
    		return 0;
    	else
    		return -1;
    }
    
    int main()
    {
    	string A1,A2,B1,B2,t1,t2;
    	int num1,num2,sum;
    	while (cin>>A1)
    	{
    		num1 = toInteger(A1);
    		char c;
    		c = getchar();
    		if (c == ' ')
    		{
    			cin>>t1;
    			if (t1[0] == '+')	//判断第二个输入字符串为+
    			{
    				c = getchar();
    				if (c == ' ')
    				{
    					cin >> B1;	//输入第三个字符串数字单词
    					num2 = toInteger(B1);
    					c = getchar();
    					if (c == ' ')
    					{
    						cin>>t2;
    						if (t2[0] == '=')	//判断最后输入的字符串为=
    						{
    							if (num1 == 0 && num2 == 0)
    							{
    								break;
    							}
    							else
    							{
    								cout<<num1 + num2<<endl;
    							}
    						}
    						else	//不是=,为数字单词
    						{
    							num2 = num2 * 10 + toInteger(t2);
    							cout<<num1 + num2<<endl;
    						}
    					}
    				}
    			}
    			else	//第一个数字单词之后不为+,则为另一个数字单词
    			{
    				num1 = num1 * 10 + toInteger(t1);
    
    				c = getchar();
    				if (c == ' ')
    				{
    					cin >> t1;	//输入加号
    					c = getchar();
    					if (c == ' ')
    					{
    						cin >> B1;	//输入第三个字符串数字单词
    						num2 = toInteger(B1);
    						c = getchar();
    						if (c == ' ')
    						{
    							cin>>t2;
    							if (t2[0] == '=')	//判断最后输入的字符串为=
    							{
    								cout<<num1 + num2<<endl;
    							}
    							else	//不是=,为数字单词
    							{
    								num2 = num2 * 10 + toInteger(t2);
    								cout<<num1 + num2<<endl;
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    	return 0;
    }


  • 相关阅读:
    第04组(64) 团队展示
    结对编程作业
    第一次个人编程作业
    寒假第二份大礼包
    热身礼包初体验,欢欢喜喜过大年
    第08组 Beta冲刺 (1/5)
    第08组 Alpha冲刺 总结
    第五次作业
    第08组 Alpha冲刺 (6/6)
    第08组 Alpha冲刺 (5/6)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3085784.html
Copyright © 2011-2022 走看看