显示偶数总和的程序

时间:2015-07-28 03:09:21

标签: while-loop fstream

我的CS课程有一个问题,我只是没有得到。我必须在文本文件中读取未指定数量的整数。从那里开始,我必须找到可被5整除的整数,然后将它们相加。假设我有一个包含1,5,7,10和11的文本文件,所以我的答案应该是15.教师说我们必须使用while循环读取直到End-Of-File。

这就是我所拥有的,这是完全错误的:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int sum, even;
    sum = 0;
    ifstream inFile;

    inFile.open("numbers.txt");

    inFile >> even;

    do
    {
        if (even % 5 == 0)
        {
            sum = sum + even;
            cout << "\nThe sum of the numbers is:" << sum << endl;
        }

        else
        {
            cout << "\nNo numbers divisible by 5." << endl;
        }
    } 
    while (!inFile.eof());

    inFile.close();

    system("pause");

    return 0;
}

确实发生了一些事情;一个无穷无尽的循环,通过大的负数。

有人能指出我正确的方向吗?

谢谢,

托比

更新:到目前为止我有这个,但它打印出4个答案。

#include <iostream> 
#include <fstream> 

using namespace std;

int main()
{
    int num, sum, count;
    sum = 0;
    ifstream inFile;

    inFile.open ("numbers2.txt");

    if (!inFile)
    {
        cout << "Can't open the input file.\n" << endl;
        system("pause");
        return 1;
     }

     inFile >> num;

     while (!inFile.eof())
     {
        inFile >> num;

        if (num % 5 == 0)
        {
            sum += num;
            cout << "Sum is: " << sum << endl;
        }

        else
        {
            cout << "Is not divisible by 5." << endl;
        }
     }

    inFile.close();

    system("pause");

    return 0;
}

我的输出如下:

  1. 总和是:5
  2. 总和是:25(我想要的输出)
  3. 不能被5整除。
  4. 不能被5整除
  5. 我会一直努力,直到得到这个。

    感谢迄今为止回答的所有人。

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情......不完美,但只是你可以用来理解和改进的东西。

C ++示例 - program.cpp

#include <iostream> // provides cout, endl etc.
#include <fstream>  // provides file stream functionality
#include <string>   // provides string
#include <stdlib.h> // provides atoi functionality

using namespace std;

int main()
{
    int sum = 0;
    int num = 0;
    bool multiple_of_5_found = false;

    std::ifstream file("numbers.txt");
    std::string str;

    // while begins
    while(std::getline(file, str))
    {
        // convert string to number
        num = atoi(str.c_str());
        if (num % 5 == 0)
        {
            multiple_of_5_found = true;
            sum += num;
        }
    }
    // while ends

    // based on what we observed/calculated, print info
    if (multiple_of_5_found)
    {
        cout << "The sum of numbers divisible by  5 is "
             << sum << endl;
    }
    else
    {
        cout << "No number divisible by 5" << endl;
    }

    return 0;
}

GCC版

$> g++ --version
g++-4.7.real (Debian 4.7.2-5) 4.7.2

<强> numbers.txt

$ cat numbers.txt
1
5
7
10
11
15

编译并运行

$ g++ program.cpp && ./a.out
The sum of numbers divisible by  5 is 30

Numbers.txt资源的Visual Studio 2013截图 Visual Studio 2013 screenshot of numbers.txt resource

Source.cpp的Visual Studio 2013截图 Visual Studio 2013 screenshot of Source.cpp

按下F7并单击“本地Windows调试器”后,

Visual Studio 2013屏幕截图 Visual Studio 2013 screenshot after pressing F7 and clicking on Local Windows Debugger