注册 登录
编程论坛 C++教室

请教如何编写一个计算器

zj704102518 发布于 2009-12-29 09:50, 735 次点击
请教如何编写一个计算器
具体要求
1)具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按‘C’清屏,按‘R’返回 菜单。
例如:输入:2
+
5
输出:7
2)实现单运算符表达式计算的功能。输入的操作数可以包含整数或浮点数。输入表达式如下:
例如:输入:2+5
输出:7
需要详细解释
谢谢
各位帮个忙
2 回复
#2
秀痘魔导士2009-12-29 14:16
程序代码:
// Calculator.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
double gResult = 0.0;
void CharCaculator()
{
    double a;
    cin>>a;
    char b;
    cin>>b;
    double c;
    cin>>c;
    if ('+' == b)
       gResult = a+c;
    else if ('-' == b)
        gResult = a-c;
    else if ('*' == b)
        gResult = a*c;
    else if ('/' == b && b!=0.0)
        gResult = a/b;
    else
        cout<<"input error!"<<endl;
   
}
void StringCaculator()
{
    cin.unsetf(ios::skipws);
    char a[100];
    int count(1);
    int index(0);
    char op;
    double num1(0.0),num2(0.0);
    cin.getline(a,100);
    for (int i = 0;i<100;i++)
    {
        if ('+' == a[i] || '-' == a[i] || '*' == a[i]|| '/' == a[i])
        {
            for (int m = 1;m < (i-index+1);m++)
                num1+=(a[index+m-1]-'0')*pow(0.1,m);
            op = a[i];
            index = i+1;
        }

        if ('.' == a[i])
        {
            if (1 == count)
            {
                for (int m = 0;m < (i-index);m++)
                    num1+=(a[i-m-1]-'0')*pow(10.0,m);
                count++;
            }
            else if (2 == count)
            {
                for (int m = 0;m < (i-index);m++)
                    num2+=(a[i-m-1]-'0')*pow(10.0,m);
                count++;
            }
            index = i+1;

        }
        if ('\0' == a[i])
        {
            for (int m = 1;m < (i-index+1);m++)
                num2+=(a[index+m-1]-'0')*pow(0.1,m);
            break;
        }

    }
    if ('+' == op)
        gResult = num1+num2;
    else if ('-' == op)
        gResult = num1-num2;
    else if ('*' == op)
        gResult = num1*num2;
    else if ('/' == op && op!=0.0)
        gResult = num1/num2;
}
int _tmain(int argc, _TCHAR* argv[])
{
    StringCaculator();
    cout<<"Result:"<<gResult<<endl;
    CharCaculator();
    cout<<"Result:"<<gResult<<endl;
    int a;
    cin>>a;
    return 0;
}
#3
秀痘魔导士2009-12-29 14:17
不加注释了,自己看吧,别老是这样求代码,你发上来,大家帮你纠正错误。
1