功能或条件错误

functional or conditional error

本文关键字:错误 条件 功能      更新时间:2023-10-16

功能或条件错误,getval(( 的右大括号处发生的错误可能是由于 while 循环中的条件,但为什么,请告诉错误原因, 在这个问题中,我需要输入来自用户的 5 个测试分数,这些分数必须在 0 到 100 之间,这就是为什么我在 getval(( 中的 do while 循环中包含一些条件,如果我排除 do while 循环,那么程序运行良好,请告诉我错误的原因。

#include <iostream>
using namespace std;
int sub1, sub2, sub3, sub4, sub5, lwst;
void getval()
{
do{
cin >> sub1;
cin >> sub2;
cin >> sub3;
cin >> sub4;
cin >> sub5;
} while ((sub1 < 101 && sub1 >= 0) &&
(sub2 < 101 && sub2 >= 0) &&
(sub3 < 101 && sub3 >= 0) &&
(sub4 < 101 && sub4 >= 0) &&
(sub5 < 101 && sub5 >= 0)
)
}

int findlowest()
{
int s1 = sub1;
int s2 = sub2;
int s3 = sub3;
int s4 = sub4;
int s5 = sub5;
int temp = 0;
while (s1&&s2&&s3&&s4&&s5)
{
s1--;
s2--;
s3--;
s4--;
s5--;
temp++;
}
return temp;
}
void calavg()
{
cout << "average is " << (sub1 + sub2 + sub3 + sub4 + sub5 - lwst) / 4;
}

int main()
{
cout << "enter the test score , marks from 0 to 100n";
getval();
lwst = findlowest();
calavg();
return 0;
}

while中的条件需要颠倒过来。

do{
cin>>sub1;
cin>>sub2;
cin>>sub3;
cin>>sub4;
cin>>sub5;
} while( ! ((sub1<101 && sub1>=0)&&
(sub2<101 && sub2>=0)&&
(sub3<101 && sub3>=0)&&
(sub4<101 && sub4>=0)&&
(sub5<101 && sub5>=0)) );

如果将条件代码移动到函数,代码将更容易理解。

do{
cin>>sub1;
cin>>sub2;
cin>>sub3;
cin>>sub4;
cin>>sub5;
} while( ! variables_within_limits(sub1, sub2, sub3, sub4, sub5) );

并将函数实现为:

bool variables_within_limits(int sub1, int sub2, int sub3, int sub4, int sub5)
{
return (sub1<101 && sub1>=0)&&
(sub2<101 && sub2>=0)&&
(sub3<101 && sub3>=0)&&
(sub4<101 && sub4>=0)&&
(sub5<101 && sub5>=0);
}

我想这是一个sintax错误-您在while后失去了;.

函数getval必须如下所示:

void getval()
{
do{
cin >> sub1;
cin >> sub2;
cin >> sub3;
cin >> sub4;
cin >> sub5;
} while ((sub1 < 101 && sub1 >= 0) &&
(sub2 < 101 && sub2 >= 0) &&
(sub3 < 101 && sub3 >= 0) &&
(sub4 < 101 && sub4 >= 0) &&
(sub5 < 101 && sub5 >= 0)
);
}

编译后,考虑更改此 while 循环中的条件 - 如果您想强制用户输入 0..100 范围内的值,我想 OR (||( 会更合适 - 例如:

void getval()
{
do{
cin >> sub1;
cin >> sub2;
cin >> sub3;
cin >> sub4;
cin >> sub5;
} while ((sub1 < 0 || sub1 > 100) ||
(sub2 < 0 || sub2 > 100) ||
(sub3 < 0 || sub3 > 100) ||
(sub4 < 0 || sub4 > 100) ||
(sub5 < 0 || sub5 > 100)
);
}

即使在那之后,也有很多需要改进的地方:

  1. 我更喜欢 5 个独立的循环来输入和检查每个值(现在如果一个值不正确,将要求用户再次输入所有值(;
  2. 名字sub1...sub5看起来是数组中的项目的良好候选项sub[5]
  3. 使用全局变量将数据从一个函数传递到另一个函数不是一种好的风格