C++ 基本 While 循环:未知输入和值增量
Posted
技术标签:
【中文标题】C++ 基本 While 循环:未知输入和值增量【英文标题】:C++ Basic While Loop: Unknown Inputs and Value Increment 【发布时间】:2016-10-24 04:31:27 【问题描述】:所以我正在尝试编写一个程序,该程序从具有标记 0 的数据文件中读取未知输入,或者我猜测循环的终止点。
0 之前每行的整数个数(整数计数)。 数据文件中所有整数的数量(int totalcount)。 数据文件中的行数(int 行)。来自数据文件的未知输入的两个示例:
示例一: 1 2 3 0 4 5 6 7 0 示例二: 0 9 11 -11 1 1 0 0 2 0这是我的程序(没有“计数”,因为这是我的问题所在):
int main()
//Declaring variables.
int input, lines, count, totalcount, datafile;
lines = 0;
count = 0;
totalcount = 0;
//Loop runs as long as data file has an integer to take in.
while(cin >> datafile)
//If datafile is not 0, loop runs until datafile is 0.
while(datafile != 0)
//Counts all integers in the file except 0.
totalcount += 1;
cin >> datafile;
//Counts how many lines there are in a data file using sentinel 0 (not "/n").
if(datafile == 0)
lines += 1;
//Outputs.
cout << lines << setw(11) << count << setw(11) << totalcount << endl;
return 0;
除了逻辑/概念本身之外,请不要担心技术性、效率或其他任何事情,因为我只是想在我的知识中找到缺失的环节来完成这项任务。
话虽如此,我的预期输出格式如下: "Line #" "每行的整数计数" "数据文件中所有整数的总计数"
使用示例 one 和我当前的代码,我会得到输出(间距不准确,'.' 用于空格):
1......0......3 2......0......7
正确的预期输出:
1......3......3 2......4......7
我想要任何关于如何计算每行整数(在标记 0 之前)并将该值分配给“int count”的提示或解释,而该值不会保留到下一行。
我是 C++ 入门课程的学生,所以请先向我展示一个基本方法,告诉我如何进行此操作,然后为将来的应用程序提供任何其他必要的高级选项。
行为准则个人陈述: 通过参与,您提供了完成作业所需的知识,而不是完成作业本身。使用的示例由我生成,用于概念演示目的,只是最终作业的一小部分。
2016 年 10 月 23 日晚上 9:56 更新 1: 当前尝试使用“temp”变量从“totalcount”中减去。如果尝试成功,我将更新我的代码。
【问题讨论】:
【参考方案1】:totalcount 是计数的总和。这是我的建议
#include <iostream>
#include <iomanip>
using namespace std;
int main()
//Declaring variables.
int input, lines, count, totalcount, datafile;
lines = 0;
count = 0;
totalcount = 0;
//Loop runs as long as data file has an integer to take in.
while(cin >> datafile)
// Add count to totalcount and reset count each time reach 0
if (datafile == 0)
totalcount += count;
lines += 1;
cout << lines << setw(11) << count << setw(11) << totalcount << endl;
count = 0;
//otherwise increase count
else
count++;
return 0;
【讨论】:
我知道我把它弄得太复杂了。整个赋值大量执行循环,因此我无法识别基本选择语句的使用。谢谢你阻止我的过度思考! 我刚刚测试运行了我的程序,实际上它确实为我的特定程序分配提供了 >totalcount。我的教授给出了一个带有预期输出值的示例数据文件,一切看起来都很好。 我确定我是经验最少的,但如果我没记错的话,count 会递增,直到 cin 为 0,这会将 count 重置为 0。但在 count 被分配为 0 之前, count 中的值已添加到 totalcount。这是否意味着除了 0 之外的每个整数,totalcount 的增量为 1,并且对于间隔 (0,0) 之间的每个整数,count 的增量为 1?使用示例集 1 2 3 0 4 5 6 7 0。 @Abhineet 是的,我犯了一个错误。您看到这一点是对的,因为我将我的作业视为一个整体,它只要求总输出一次,这就是为什么它在我的示例中保持不变。 @khôinguyễn 是的,我认为这可能会让人感到困惑,这就是为什么我的开场白说:“所以我正在尝试编写一个程序,它从具有标记 0 的数据文件中读取未知输入,或者我猜循环的终止点。”同样在我的代码本身中,我写道:“//使用标记 0(不是“/n”)计算数据文件中有多少行。”所以我想我很清楚“0”是我的结束条件,但这是我的第一篇文章,所以希望下次我能在写问题时做得更好:/以上是关于C++ 基本 While 循环:未知输入和值增量的主要内容,如果未能解决你的问题,请参考以下文章
您如何专门获得一个浮点数为 2 位小数的输入作为 C++ 中 while 循环的条件?
为啥'continue'语句忽略'while'循环中的循环计数器增量,而不是'for'循环?
Stroustrup C++ 书籍。如何跟踪while循环中哪个整数输入最小和最大?