C++ 查找最近数

C++ 查找最近数,c++,function,file,visual-c++,C++,Function,File,Visual C++,我有以下.txt文件: 23 43 -10 65 1 -1 -3 3 3 400 401 -389 21 6 -6 0 0 0 我需要编写一个程序,从文件中读取数据,直到它读取带有三个0的行 然后我需要编写一个函数,它接受三个整数并返回最接近0的数字。如果两个或三个值与0的距离相同,则返回最接近0的第一个数字 这就是我到目前为止所做的: #include <iostream> #include <fstream> #include <cmath> usin

我有以下.txt文件:

23 43 -10
65 1 -1
-3 3 3
400 401 -389
21 6 -6
0 0 0
我需要编写一个程序,从文件中读取数据,直到它读取带有三个0的行

然后我需要编写一个函数,它接受三个整数并返回最接近0的数字。如果两个或三个值与0的距离相同,则返回最接近0的第一个数字

这就是我到目前为止所做的:

#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int findClosest(int, int, int);

int main()
{
    ifstream fin;
    infile.open("LAB5DATA.TXT");

    int a, b, c;

    while (infile >> a >> b >> c && a + b + c != 0)
    {     
    int closest = findClosest(a, b, c);
    cout << closest << endl;
    }
    infile.close();
    return 0;
}

int findClosest(int a, int b, int c)
{
    int differenceA = abs(a - 0);
    int differenceB = abs(b - 0);
    int differenceC = abs(c - 0);

    int closest = differenceA;
    if (differenceB < closest)
        closest = differenceB;
    if (differenceC < closest)
        closest = differenceC;

    return closest;
}
任何帮助都将不胜感激

我会通过做一些更改来修复findClosest函数。首先,定义一个取整数绝对值的函数,以便更清楚地比较差异

然后,只需返回3个差异中的最小值

编辑:

int findClosest(int a, int b, int c)
{
    int closest = a;
    if (abs(b) < abs(a)) closest = b;
    if (abs(c) < abs(b)) closest = c;
    return closest;
}

在findClosest函数中投入一些精力,并向我们展示您的尝试。我们不会为你做家庭作业。a+b+c!=你有没有想过会发生什么,e。g、 ,a=3B=-2C=-1?尼尔,你应该回答这个问题而不是发表评论。当你有足够的分数时,你可以在评论部分发表评论。当然你可以在这一部分添加评论,因为这是你的帖子。很抱歉,我只是不认为给他一个完整的解决方案会教会他很多。伪代码应该足以指导他,但既然你已经提供了解决方案,我想行动已经完成了。