大一新生C++,程序错误百出,但是不知道哪里错了

设计一个简单的计算器程序,根据输入的操作数和运算符可以完成 + 、—、* 、/ 、% 运算。输出结果必须是一个完整的算术运算式的格式。例如 :输入3.1 5 + ,输出结果是 3.1+5=8.1。

注意:当输入的运算符是"/"且第二个操作数是0时,输出“除数不能为0”

  当输入的运算符是"%"且操作数中含有小数(如6.5)时,输出“error!”。

输入格式:

按顺序依次输入两操作数和运算符。如3 5 /

请nice person能仔细讲讲哪里错了,为什么错了,万分感谢!
Q:switch中每个case 语句中想执行多个语句
想要输入运算符,并且在case的常量设为运算符进行匹配
想要判断该数是否为整数

#include <iostream>
#include<typeinfo>
#include<iomanip>
using namespace std;

int main()
{   double a,b;
char ys;
    cin>>a>>b>>ys;
    switch(ys)
   {  case +:cout<<a<<"ys"<<b<<"="<<a+b;break;
      case -:cout<<a<<"ys"<<b<<"="<<a-b;break;
      case *:cout<<a<<"ys"<<b<<"="<<a*b;break;
      case /:if(b==0)
             cout<<"除数不能为0";
            else cout<<a<<"ys"<<b<<"="<<a/b;
            break;

    case % :if(typeid(a).name()=="int"&& typeid(b).name()=="int" )
    cout<<a<<"ys"<<b<<"="<<a%b;
    else cout<<"error";
    break;}
    return 0;
}



修改如下:

#include <iostream>
#include<typeinfo>
#include<iomanip>
using namespace std;
int main()
{   
    double a,b;
    char ys;
    cin>>a>>b>>ys;
    switch(ys)
    {  
    case '+':cout<<a<<ys<<b<<"="<<a+b;break;
    case '-':cout<<a<<ys<<b<<"="<<a-b;break;
    case '*':cout<<a<<ys<<b<<"="<<a*b;break;
    case '/':
        {
            if(b==0)
                cout<<"除数不能为0";
            else 
                cout<<a<<ys<<b<<"="<<a/b;
        }
            break;
    case '%':
        {
            if(a == (int)a && b == (int)b)
                cout<<a<<ys<<b<<"="<<(int)a%(int)b;
            else 
                cout<<"error";
        }
            break;
    }
    return 0;
}

要是真想把字符转int 应该是这种格式 case (int)'+':