Words 重量

Words 重量

题目描述:
每个句子由多个单词组成,句子中的每个单词的长度都可能不一样, 我们假设每个单词的长度 LW 为该单词
的重量,请给出整个句子的平均重量 V。
输入描述:
输入只有一行,包含一个字符串 S(长度不会超过 100),代表整个句子,句子中只包含大小写的英文字母
(不包含标点符号),每个单词之间有一个空格。
输出描述:
输出 S 的平均重量 V(每个单词的长度之和 / 单词个数)(四舍五入保留两位小数)。
示例 1
输入:Who Love Mate
输出:3.67

#include <iostream>
#include <string>
using namespace std;
bool IsSeparator(char ch); //判断一个字符是不是分隔符(空格、逗号,句号)
int CharCount(string str); //计算句子中字母数的函数
int WordCount(string sentence); //计算句子中单词个数的函数
int main(int argc, char** argv) {
	string sentence;
	getline(cin, sentence);
	int letterNum = CharCount(sentence);
	int wordNum = WordCount(sentence);
	cout << letterNum * 1.0 / wordNum;
	return 0;
}
int WordCount(string sentence) {
	int wordNum = 0;
	int len = sentence.length();
	int i = 0;
	while (true)
	{
		//如果是分隔符,就跳过
		if (IsSeparator(sentence[i]))
		{
			while (i <= len - 1 && IsSeparator(sentence[i]))
			{
				i++;
			}
		}
		//如果不是分隔符,就说明遇到单词,wordNum++,然后逐步跳过该单词
		else if (!IsSeparator(sentence[i]))
		{
			wordNum++;
			while (i <= len - 1 && !IsSeparator(sentence[i]))
			{
				i++;
			}
		}
		if (i > len - 1)
		{
			break;
		}
	}
	return wordNum;
}
bool IsSeparator(char ch) {
	if (ch == ' ' || ch == ',' || ch == '.')
		return true;
	return false;
}
int CharCount(string str) {
	int len = str.length();
	int cnt = 0;
	for (int i = 0; i < len; i++)
	{
		if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))
		{
			cnt++;
		}
	}
	return cnt;
}

其实不用搞这么多花里胡哨的直接搞定也行:

#include<iostream>
#include<vector>
#include<string>
using namespace std;

int main() {
	string str = "";
	while (getline(cin, str)) {
		size_t N = str.size();
		int countspace = 0;
		double ans = 0;
		for (size_t i = 0; i < N; ++i) {
			if (str[i] == ' ') countspace++;
		}
		ans = 1.0*(N - countspace) / (1.0*(countspace + 1));
		cout << ans << endl;
	}
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值