我的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;
}
我的输出如下:
我会一直努力,直到得到这个。
感谢迄今为止回答的所有人。
答案 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截图
按下F7并单击“本地Windows调试器”后,