描述:
中南林业科技大学计算机与信息工程学院某位老师开发一个字符识别程序. 这个程序用来将纸质文档转换为电子版. 很显然, 这个转换过程不能保证100%正确, 其中有些字符不能识别. 你的任务是写一个程序帮助这位老师计算识别的效率. 识别的效率用公式R/A进行计算,其中R表示被成功识别的字符总数, A表示识别的字符总数. 行尾字符(即换行符)不作为字符看待。
输入:
输入包含几个测试数据。输入文件的第一行为一个整数N,表示测试数据有N组,每一组测试数据至少有一行经字符识别程序处理过的字符串, 其中没有被成功识别的字符用”#”表示, 每一组测试数据后面都有一个空行(最后一个测试数据也不例外), 其它的行不会为空. 每一行不会超过100个字符。
输出:
对于每组测试数据,输出一行, 这行包含一个语句” Efficiency ratio is X%.”, 其中X表示识别效率的百分比, 采用四舍五入的方式,并且保留小数点后1位小数(即精确到0.1%)。
样例输入:
3
Pr#nt ex##tly one##ine for#eac# te#t c#se.
None.
The i#put consists of
N test ca#es. The number
of th#m (N) is given on
the first #ine
of the#input#file.
样例输出:
Efficiency ratio is 78.6%.
Efficiency ratio is 100.0%.
Efficiency ratio is 94.0%.
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
int n;
string str;
scanf("%d",&n);
getchar();
for(int i=1;i<=n;i++)
{
int all=0,wa=0;
while(getline(cin,str))
{
int len=str.length();
if(len==0) //判断输入的是否为空行
break;
all+=len;
for(int i=0;i<len;i++)
{
if(str[i]=='#')
wa++; //记录未被识别的字符
}
}
double p=(all-wa)*1.0/all*100;
printf("Efficiency ratio is %.1f%%.\n",p);
}
return 0;
}