我已经从文件中读取了一个RGB值的数据集,我试图编码K means算法,所以我需要找到数据集中最接近三个数字的值(3个值),可以你帮我告诉我如何做到这一点?找到最接近的值C++
我小白编程所以请温柔与滥用:L
谢谢您的时间
下面这段代码在文件中写道:
#include "stdafx.h"
#include <iostream>;
#include <fstream>;
#include <string>;
#include <cstdlib>;
using namespace std;
class rgb {
public:
int r;
int g;
int b;
};
int _tmain(int argc, _TCHAR* argv[])
{
char filename[2000];
ifstream infile;
infile.open("file.txt");
if (infile.fail()) {
cerr << "something went wrong :(" << endl;
system("pause");
exit(1);
}
rgb array[500];
cout << "reading in file: " << endl;
for (int i = 0; i < 500; i++)
{
infile >> array[i].r >> array[i].g >> array[i].b;
cout << "r: " << array[i].r << " ";
cout << "g: " << array[i].g << " ";
cout << "b: " << array[i].b << " " << endl;
}
那么这个代码查找数据集中最接近一个值(value1)的值,但继续阅读,您将看到底部真正需要的内容。此代码实际上可能是更好的方法:L
int num = 180; // random value assigned at 180
int centroid1x;
int distance = 400;
for (int i = 0; i < 500; i++)
{
if (abs(num - array[i].r) <= distance)
{
distance = abs(num - array[i].r);
centroid1x = array[i].r;
}
cout << centroid1x << " " ;
}
cout << endl << endl;
int centroid1y;
distance = 400;
for (int i = 0; i < 500; i++)
{
if (abs(num - array[i].g) <= distance)
{
distance = abs(num - array[i].g);
centroid1y = array[i].g;
}
cout << centroid1y << " " ;
}
cout << endl << endl;
int centroid1z;
distance = 400;
for (int i = 0; i < 500; i++)
{
if (abs(num - array[i].b) <= distance)
{
distance = abs(num - array[i].b);
centroid1z = array[i].b;
}
cout << centroid1z << " " ;
}
cout << endl << endl;
cout << "The closest x axis of centroid one is: " << centroid1x << endl;
cout << "The closest y axis of centroid one is: " << centroid1y << endl;
cout << "The closest z axis of centroid one is: " << centroid1z << endl << endl;
cout << "The closest point to centroid one is " << centroid1x << "." << centroid1y << "." << centroid1z << endl;
system("pause");
return 0;
}
我需要的是代码,找出所有都接近180号码,以及所有那些更接近40的数字和所有那些更接近100
你的代码有什么问题。您不需要在这里编写所有的代码,而是为您的问题提供[SSCCE](http://www.sscce.org)。 – Werner
我想学习一种方法,使程序找到数据集(文件)中的哪些数字更接近180,40和100 – ceefax
是的,但你有一个代码,有什么不工作呢?你能否隔离那些工作不正常的问题部分? – Werner