C++ 如何让代码检测多个句点(AKA.)
我正在构建一个算术计算器,我对所有内容都进行了错误检查,但12.34是允许的,但12.3.4不应该是因为有多个。我如何在代码中实现它?我不知道如何停止我寻找的“if”语句,因为它跳过了多个1,而我只想让任何一个合法的十进制数字通过,比如12.34C++ 如何让代码检测多个句点(AKA.),c++,C++,我正在构建一个算术计算器,我对所有内容都进行了错误检查,但12.34是允许的,但12.3.4不应该是因为有多个。我如何在代码中实现它?我不知道如何停止我寻找的“if”语句,因为它跳过了多个1,而我只想让任何一个合法的十进制数字通过,比如12.34 #include <iostream> #include <cstdlib> #include <time.h> #include <math.h> #include <errno.h>
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <math.h>
#include <errno.h>
using namespace std;
const double MAXRANGE = pow(2.0, 16.0); // 65536
const double MINRANGE = -pow(2.0, 16.0);
bool validDouble(const char* argument)
{
return atof(argument);
}
int main(int argc, char* argv[])
{
char z;
bool isARealDouble = true;
if (argc == 3)
{
z = 0;
}
else if (argc == 4)
{
z = argv[3][0];
}
else if (argc < 3)
{
cout << "P" << endl;
return 0;
}
else if (argc > 4)
{
cout << "P" << endl;
return 0;
}
if ((z == 'a') || (z == 's') || (z == 'm') || (z == 'd') || (z == 'p') || (z == 0))
{
if (z == 0)
{
float h;
float x = atof(argv[1]);
float y = atof(argv[2]);
if (x <= MINRANGE)
{
cout << "R" << endl;
return 0;
}
else if (x >= MAXRANGE)
{
cout << "R" << endl;
return 0;
}
if (y <= MINRANGE)
{
cout << "R" << endl;
return 0;
}
else if (y >= MAXRANGE)
{
cout << "R" << endl;
return 0;
}
for (int i = 1; i < argc; i++)
{
isARealDouble = true;
for (int j = 0; j < strlen(argv[i]); j++)
{
cout << argv[i][j] << " ";
if (isdigit(argv[i][j]) || argv[i][j] == '.')
{
isARealDouble = true;
}
else
{
isARealDouble = false;
cout << "X" << endl;
return 0;
}
}
}
if (isARealDouble)
{
h = x + y;
cout << h << endl;
return 0;
}
}
}
return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
const double MAXRANGE=pow(2.0,16.0);//65536
const double MINRANGE=-pow(2.0,16.0);
bool validDouble(常量字符*参数)
{
返回atof(参数);
}
int main(int argc,char*argv[])
{
charz;
bool-isarealdoull=true;
如果(argc==3)
{
z=0;
}
else if(argc==4)
{
z=argv[3][0];
}
否则如果(argc<3)
{
无法将C字符串转换为std::string
并使用std::count
:
#include <algorithm>
#include <string>
#include <vector>
int main(int argc, char* argv[]) {
auto args = std::vector<std::string>{argv, argv + argc};
for (std::size_t i = 1; i < args.size(); ++i) {
const auto count = std::count(args[i].begin(), args[i].end(), '.');
if (count > 1) {
return EXIT_FAILURE;
}
}
}
#包括
#包括
#包括
int main(int argc,char*argv[]){
自动args=std::vector{argv,argv+argc};
对于(std::size_t i=1;i1){
返回退出失败;
}
}
}
<代码>将C字符串转换成<代码> STD::String 并使用<代码> STD::计数< /Cord> >我将如何做,IM新的C++代码,如果是(ISALALILIN),行的代码是什么?<代码> > <代码>条件在评估时总是正确的,因为如果<代码> ISAARALILUT/< C++ >被设置为假,则程序将永远无法达到该行。解决方案您应该在问题中提到它。@下划线\表示我的错误。我传递的参数错误。您是对的。我猜WandBox每行需要一个离散参数,因此将原始的空格分隔参数集视为“一个引用的参数”。@ethanwoodvine:以后,请指定问题中的所有约束。