C ++ Basic While循环:未知输入和值增量

时间:2016-10-24 04:31:28

标签: c++

所以我试图编写一个程序,从具有标记0的数据文件中读取未知输入,或者我猜测循环的终止点。

  • 0之前每行的整数数(int count)。
  • 数据文件中的所有整数数(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;
}

请不要担心技术性,效率或逻辑/概念本身以外的任何其他因素,因为我只是想在我的知识中找到缺失的链接来完成此任务。

话虽如此,我的预期输出格式为:
&#34; Line#&#34; &#34;每行的整数计数&#34; &#34;数据文件中所有整数的总计数&#34;

使用示例一个和我当前的代码,我会有输出(间距不准确,&#39;。&#39;是空白):

  

1 ...... 0 ...... 3
  2 ...... 0 ...... 7

纠正预期的产出:

  

1 ...... 3 ...... 3
  2 ...... 4 ...... 7

我想知道如何计算每行的整数(在哨兵0之前)并将该值分配给&#34; int count&#34;没有值持续到下一行。

我是一名C ++入门课程的学生,所以请向我展示一个基本的方法,我将首先介绍这个问题,然后根据未来的应用需要提供其他任何高级选项。

行为准则个人陈述:
通过参与,您将为完成作业提供必要的知识,而不是完成作业本身。使用的示例由我生成,用于概念演示目的,并且只是最终作业的一小部分。

10/23/2016 9:56 PM更新1:
目前正试图使用​​&#34; temp&#34;变量从&#34; totalcount&#34;中减去。如果尝试成功,我将更新我的代码。

1 个答案:

答案 0 :(得分:0)

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;
}