求c++高手指点一下我的代码

来源:百度知道 编辑:UC知道 时间:2024/05/20 15:30:36
描述

在高速公路上有一个测速器,它能测出所有经过它的车辆的速度。

当然咯,在高速公路上,有一个最低限制速度,和一个最高限制速度。

现在已知,有n辆汽车经过,它们的速度都测试出来了。

输入

第一行是最低限制速度
第二行是最高限制速度
第三行是n (n<=50)
下面一行有n个数字,是每辆车的速度

输出

如果经过的车辆中,有超过10%的车辆不合法(即速度低于最低限制速度、或者高于最高限制速度),那么输出0.00。否则输出合法车辆的平均速度。保留两位小数

样例输入

1
50
10
42 43 44 45 46 47 48 49 50 51

样例输出

46.00

以下是我的代码,为什么输出结果总是0.00呢?

#include<iostream>
#include <iomanip>
using namespace std;
float high;
float low;
int n;
int temp=0;
int legal=0;
int illg=0;
void clear(float a[]);
float average(float a[],int n);
float lgl[50];
float speed[50];

int main(void)
{ cin>>low>>high>>n;
clear(lgl);
clear(speed);
while(temp<=(n-1))
{cin>>speed[temp];
temp=temp+1;
}
tem

简单就一处错误。如下:
if((float)illg/n>0.1)////////这里错了 应该是if((float)(illg/n)>0.1)
{cout<<"0.00"<<endl;}
else{
cout.precision(2);
cout<<setiosflags(ios::fixed)<<setprecision(2)<<average(lgl,legal)<<endl;
}
因为((float)illg/n>0.1是先把illg强制转换成浮点数再除n 结点还是整数等于0,永小于0.1

告诉你我的方法,调试啊。这样最有效。

呵呵,你有一个不小心,判断 速度是不是合法的那个 while 循环,条件判断时 多打了个 “=”,改成 “<" 就OK了,别的都很好,教了我不少东西
PS:代码有点乱,最好注意下格式,呵呵