有没有更简单的方法来写这个? 我正在学习C++的基础,我正在做一个作业。我在问是否有更简单的方法来写这部分 if ( 100 >= projectgrade && 0<= projectgrade ) {} else { cout<<endl<<"invalid data, please retry again."; cin.ignore(); cin.get(); return EXIT_SUCCESS; } if ( 100 >= midtermgrade && 0<= midtermgrade ) {} else { cout<<endl<<"invalid data, please retry again."; cin.ignore(); cin.get(); return EXIT_SUCCESS; } if ( 100 >= finalexamgrade && 0<= finalexamgrade ) {} else { cout<<endl<<"invalid data, please retry again."; cin.ignore(); cin.get(); return EXIT_SUCCESS; } if(100>=projectgrade&&0if(projectgrade 100)| | | | | | | | | | | | | | | |(中期成绩100)| | | | | { 如果((项目等级100)| | | | | | | | | | | | |(最终等级100)) { cout
好吧,如果你检查你的逻辑,它是如果任何分数小于0或大于100,那么类似这样的事情-有没有更简单的方法来写这个? 我正在学习C++的基础,我正在做一个作业。我在问是否有更简单的方法来写这部分 if ( 100 >= projectgrade && 0<= projectgrade ) {} else { cout<<endl<<"invalid data, please retry again."; cin.ignore(); cin.get(); return EXIT_SUCCESS; } if ( 100 >= midtermgrade && 0<= midtermgrade ) {} else { cout<<endl<<"invalid data, please retry again."; cin.ignore(); cin.get(); return EXIT_SUCCESS; } if ( 100 >= finalexamgrade && 0<= finalexamgrade ) {} else { cout<<endl<<"invalid data, please retry again."; cin.ignore(); cin.get(); return EXIT_SUCCESS; } if(100>=projectgrade&&0if(projectgrade 100)| | | | | | | | | | | | | | | |(中期成绩100)| | | | | { 如果((项目等级100)| | | | | | | | | | | | |(最终等级100)) { cout,c++,if-statement,C++,If Statement,好吧,如果你检查你的逻辑,它是如果任何分数小于0或大于100,那么类似这样的事情- if ( projectgrade < 0 || projectgrade > 100 || midtermgrade < 0 || midtermgrade > 100 || finalexamgrade < 0 || finalexamgrade > 100 ) { cout<<endl<<"invalid dat
if ( projectgrade < 0 || projectgrade > 100 ||
midtermgrade < 0 || midtermgrade > 100 ||
finalexamgrade < 0 || finalexamgrade > 100
) {
cout<<endl<<"invalid data, please retry again.";
cin.ignore();
cin.get();
return EXIT_SUCCESS;
}
那么如果可以缩短为
if (range(projectgrade) || range(midtermgrade) || range(finalexamgrade))
好吧,如果你检查你的逻辑,它是如果任何一个分数小于0或大于100,那么像这样的东西-
if ( projectgrade < 0 || projectgrade > 100 ||
midtermgrade < 0 || midtermgrade > 100 ||
finalexamgrade < 0 || finalexamgrade > 100
) {
cout<<endl<<"invalid data, please retry again.";
cin.ignore();
cin.get();
return EXIT_SUCCESS;
}
那么如果可以缩短为
if (range(projectgrade) || range(midtermgrade) || range(finalexamgrade))
在C++11中,您可以编写:
auto failure = [](){
cout << "invalid data, please try again" << endl;
cin.ignore();
cin.get();
return 0;
};
自动故障=[](){
在C++11中,您可以编写:
auto failure = [](){
cout << "invalid data, please try again" << endl;
cin.ignore();
cin.get();
return 0;
};
自动故障=[](){
cout首先,您可以为测试添加一个函数
bool is_valid_grade(int grade)
{
return 0 <= grade && grade <= 100;
}
首先,您可以为测试添加一个函数
bool is_valid_grade(int grade)
{
return 0 <= grade && grade <= 100;
}
使用|
和括号。如果(100projectgrade)失败,我不确定返回EXIT|u SUCCESS
是否明智@YuHao它被称为Yoda技术,它意味着如果你输入一个打字错误,然后写=
而不是=
,那么编译器会诊断error@MattMcNabb我自己也反对尤达的条件,但我明白为什么人们用if(42==n)
而不是if(n==42)
我也同意。但是改变if(n>=42)
到if(42使用|
和括号。我不确定在失败时返回EXIT|u SUCCESS
是否明智…if(100projectgrade)@YuHao它被称为Yoda技术,它意味着如果你输入一个打字错误,然后写=
而不是=
,那么编译器会诊断error@MattMcNabb我自己也反对尤达的条件,但我明白为什么人们用if(42==n)
而不是if(n==42)
我也同意。但是改变if(n>=42)
到如果(42编译器显示SoTye版本和代码XD的相同程序集,但这一次更容易读取XDcompiler,显示SunTyE版本和代码XD的相同程序集。但是这一次更容易阅读XDDo而不使用该范围宏。这是不安全的,并且可能导致<>代码> x<代码>的双重评价。请考虑<代码>范围。(++x)< /代码>,然后意识到您可能会增加两次。使用模板函数代替。使用函数而不是宏。不要使用该范围宏。它是不安全的,可能导致对<>代码> x>代码>的双重评价。请考虑<代码>范围(++x)。
然后意识到可能会增加两次!使用模板函数代替。使用函数代替宏。
if (is_valid_grade(projectgrade)
&& is_valid_grade(midtermgrade)
&& is_valid_grade(finalexamgrade))
{
// Valid code
}
else
{
return failure(); // your previous code into a function
}