字符识别(字符串处理)

该文描述了一个字符识别程序,用于将纸质文档转化为电子版。由于识别不完全,部分字符用'#'表示。文章提出了计算识别效率的公式R/A,其中R是成功识别的字符数,A是总字符数。程序需要处理包含多组测试数据的输入,并输出每组数据的识别效率,精确到0.1%。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述:

中南林业科技大学计算机与信息工程学院某位老师开发一个字符识别程序. 这个程序用来将纸质文档转换为电子版. 很显然, 这个转换过程不能保证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;
} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值