【发布时间】:2017-03-05 06:51:29
【问题描述】:
我现在正在使用递归解决算法问题。所以在这个问题中你需要弄清楚的是,如果你输入的字符串是一个表达式。例如,您有字符串“256+300-500” - 这是一个表达式。所以表达式是一个包含数字和符号“+”和“-”的字符串。标志 + 和 - 不能彼此靠近,也不能有 + 或 2 - 彼此靠近。所以“256++300”和“256+-600-500”不是表达式。此外,如果数字中包含字母,则它不是表达式“54e2”。所以请帮我制作这个程序。我已经完成了查看数字字符串是否为数字的部分。
#include <iostream>
#include <cmath>
#include<string>
using namespace std;
int cif(char c)
{
if(isdigit(c))return 1;
else return 0;
}
int num (string s)
{
int z=s.length();
if(z==1) return cif(s[0]);
else
{
char c =s[0];
s=s.substr(1);
if(cif(c) && num(s))return 1; else return 0;
}
}
int main()
{
cout << num("2353Y3554");
return 0;
}
这个程序的输出是0,因为它不是一个数字,如果是输出应该是1。请帮我制作我需要继续这个程序的程序。
【问题讨论】:
-
“不可能有 + 或 2 - 彼此靠近” - 我想说
"10--2"确实是一个有效的表达。 . .否则你会从你的程序中排除负数。 -
不,当然 -- 等于 + 但不,我只需要不同的符号,请帮助某人
标签: c++ algorithm c++11 recursion c++14