Есть следующая закавыка:
С клавиатуры вводятся координаты точек на плоскости в виде строк, представляющих пару в формате “(x,y)”. Строка должна быть проанализирована, координаты извлечены и помещены в вектор точек (точка –пользовательский тип данных структура). Вычислить расстояния всех точек до точки, введенной последней.
Написал код через обычные массивы (по формуле r=sqrt( (x-x[1])^2+(y-y[1])^2) - код пашет):
#include <stdio.h>
#include <iostream.h>
#include <math.h>
main()
{
float x[100], y[100];
int i, n;
float r;
cout << "Enter dimension of 1D massives (vectors of X & Y coordinates)\n";
cin >> n;
cout << "Enter X coordinates of points for the 1st 1D massive (vector 1):\n";
for (i = 0; i < n; i++)
{ cin >> x[i];
}
cout << "Enter Y coordinates of points for the 2nd 1D massive (vector 2):\n";
for (i = 0; i < n; i++)
{ cin >> y[i];
}
for (i = 0; i < n; i++)
{ r=sqrt( ((x[i]-x[0])*(x[i]-x[0])+(y[i]-y[0])*(y[i]-y[0])) );
cout << "\n r = " << r;
cout << "\n";
}
return 0;
}
Как вычислить расстояние между точками через векторы? Надо приплести сюда итераторы? Есть у кого опыт в итераторах? Я пока не до конца разобрался:
#include <stdio.h>
#include <iostream.h>
#include <vector.h>
#include <algorithm.h>
#include <list.h>
struct coordinates {
{ float x, y;
} points;
main()
{ using namespace std;
int i;
float r;
cout << "Set dimension of vector";
cin >> n;
for (i=0; i<n; i++) { // Input coordinates x, y
cout << "Input x:";
cin >> points.x;
cout << "Input y:";
cin >> points.y;
}
std:: vector<points> pointvect; // vector declaration
points points;
pointvect.push_back (points); // add point to the vector
for_each (pointvect.begin(). pointvect.end(). print);
cout << endl;
// тут начинается творчество
vector<points>::iterator pos;
for (pos = pointvect.begin(); pos != pointvect.end(); pos++) {
r=sqrt( (pointvect[i]-pointvect[0])*(pointvect[i]-pointvect[0]));
cout << r;
getch();
return 0;
}