=projectgrade&&0if(projectgrade 100)| | | | | | | | | | | | | | | |(中期成绩100)| | | | | { 如果((项目等级100)| | | | | | | | | | | | |(最终等级100)) { cout,c++,if-statement,C++,If Statement" /> =projectgrade&&0if(projectgrade 100)| | | | | | | | | | | | | | | |(中期成绩100)| | | | | { 如果((项目等级100)| | | | | | | | | | | | |(最终等级100)) { cout,c++,if-statement,C++,If Statement" />

有没有更简单的方法来写这个? 我正在学习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 ( 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

好吧,如果你检查你的逻辑,它是如果任何分数小于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))

好吧,如果你检查你的逻辑,它是如果任何一个分数小于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
}