寻找最接近的数字

Finding closest number

本文关键字:数字 最接近 寻找      更新时间:2023-10-16

我有如下的。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;
}