如何从 while 循环中添加数字
How can I add numbers from a while loop?
代码输出单独的行,但我希望它将所有行加在一起。
示例测试数据文件:
艾里斯·普鲁伊森在2014年田径残奥会上
Iris Pruysen是一名假腿运动员,France.Today 2017年7月27日在巴黎塞巴斯蒂安查莱蒂体育场举行的2014年田径残奥会上参加跳远比赛。
输出为:
Average number of letters per sentence 163.000
Total number of digits is 8
Average number of letters per sentence 5.000
Total number of digits is 6
我怎么能只有一行平均字母数和一行总数字?
#include <iostream>
#include <iomanip>
#include <cmath>
#include <cctype>
using namespace std;
int main()
{
int letters; //Total number of letters
int digits; //Total number of digits
double sentencecount; //Number of sentences
float averageletters; //Average number of letters per sentence
int linecount=0; //Count of lines
char current; //Current character
cout << fixed << setprecision(3);
cin.get(current);
while (cin) //while receiving input
{
digits = 0;
letters = 0;
linecount++;
while (current != '.' && current != '!' && current != '?') //checks each line
{
if (isalpha(current))//counts alphabet characters
letters++;
if (isdigit(current))//counts digits
digits++;
cin.get (current);
}
sentencecount = letters/linecount;//finds average letters per sentence
cin.get (current);
cout << "Average number of letters per sentence " << sentencecount << endl << "Total number of digits is " << digits << endl;
}
// cout << "Average number of letters per sentence " << sentencecount << endl << "Total number of digits is " << digits << endl;
return 0;
}
这是我清理
代码的努力。这真的是一个在正确的时间做正确的事情的问题。你需要考虑什么应该在循环内部,什么应该在外面。例如,很明显,如果您尝试汇总字母数,则在循环内将字母数设置为零是错误的。
#include <iostream>
#include <iomanip>
#include <cmath>
#include <cctype>
using namespace std;
int main()
{
int letters = 0; // Total number of letters
int digits = 0; // Total number of digits
double sentencecount; // Number of sentences
float averageletters; // Average number of letters per sentence
int linecount=0; // Count of lines
char current; // Current character
cout << fixed << setprecision(3);
cin.get(current);
while (cin) // While receiving input
{
linecount++;
while (current != '.' && current != '!' && current != '?') // Checks each line
{
if (isalpha(current)) // Counts alphabet characters
letters++;
if (isdigit(current)) // Counts digits
digits++;
cin.get (current);
}
cin.get (current);
}
sentencecount = letters/linecount; // Finds average letters per sentence
cout << "Average number of letters per sentence " << sentencecount << endl
<< "Total number of digits is " << digits << endl;
return 0;
}
免责声明,我还没有实际测试上面的代码。
此代码可以通过仅使用一个while
循环来简化。行数未计算在内。使用if (current == 'n') linecount++;
计算行数。
目前,"!!!"
被视为3句话。检查前一个字符以正确识别句子的结尾。
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
int letters = 0;
int digits = 0;
int sentences = 0;
stringstream source;
source << "!!!Abc def 1 2 3 100. Sentence 2.";
char current;
char previous = 0;
while(source.get(current))
{
if(isalnum(previous) && (current == '.' || current == '!' || current == '?'))
sentences++;
else if(isalpha(current))
letters++;
else if(isdigit(current))
digits++;
previous = current;
}
cout << "digits " << digits << endl;
cout << "letters " << letters << endl;
cout << "sentences " << sentences << endl;
cout << "total average " << (float)letters/sentences << endl;
return 0;
}
请注意,当c
是!?.
之一时,isalpha(c)
将返回零
相关文章:
- 我需要知道如何在 c++ 中使用增量值添加到一定数字
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 在不添加进位的情况下添加数字的C++程序
- 将两个数字添加为链表
- C++:添加到输出中的不需要的数字
- 如何非常快速地将数字添加到 Vector 中的一系列元素中
- 如何在 c++ 中添加两个大的双精度数字
- 字符串添加数字 C++
- Arduino代码无法正确添加数字
- 如何从 while 循环中添加数字
- 在我的输出之前,我该如何添加数字
- C 如何结束一个段循环,该循环添加数字而不使用数字作为触发器来结束循环
- 无法理解为什么在添加数字后在末尾添加零
- C++输入文件添加数字
- 如何创建添加数字的模板函数
- 向字符串数组中的元素添加数字值
- 重载运算符>>并向字符串添加数字
- 如何在矩阵中添加数字以产生最小结果
- 在fstream中添加数字(c++)
- g++ -D选项添加数字1