मैं दो बिंदुओं के बीच की दूरी की गणना करने की कोशिश कर रहा हूं। सी ++ में वेक्टर में संग्रहीत दो बिंदु: (0,0) और (1,1)।एक पुनरावर्तक का उपयोग कैसे करें?
मैं के रूप में
0
1.4
1.4
0
परिणाम प्राप्त करने की अपेक्षा की कर रहा हूँ लेकिन वास्तविक नतीजा यह है कि मुझे मिल गया
0
1
-1
0
मुझे लगता है कि वहाँ कुछ तरह से मैं वेक्टर में इटरेटर का उपयोग के साथ गलत है। मैं इस समस्या को कैसे ठीक कर सकता हूं?
मैंने नीचे दिए गए कोड को पोस्ट किया है।
typedef struct point {
float x;
float y;
} point;
float distance(point *p1, point *p2)
{
return sqrt((p1->x - p2->x)*(p1->x - p2->x) +
(p1->y - p2->y)*(p1->y - p2->y));
}
int main()
{
vector <point> po;
point p1; p1.x = 0; p1.y = 0;
point p2; p2.x = 1; p2.y = 1;
po.push_back(p1);
po.push_back(p2);
vector <point>::iterator ii;
vector <point>::iterator jj;
for (ii = po.begin(); ii != po.end(); ii++)
{
for (jj = po.begin(); jj != po.end(); jj++)
{
cout << distance(ii,jj) << " ";
}
}
return 0;
}
यह उत्तर गलत है। std :: दूरी को एडीएल द्वारा std :: iterator पर उठाया जा सकता है, इसलिए यह 'std' का उपयोग किया जाता है या नहीं, इस पर ध्यान दिए बिना उम्मीदवार सेट का हिस्सा बन सकता है। – Puppy
@Puppy: यह वास्तव में सच है (और 2.5 वर्षों के लिए कोई भी ध्यान नहीं दिया), लेकिन यह मेरा पूरा जवाब नहीं है। 'कॉन्स्ट पॉइंट और पी 1 'प्रति अंक पास करने से भी इस समस्या का समाधान होगा। – sbi
@ एसबीआई: नहीं, यह समस्या का समाधान नहीं करेगा। गलती से 'दूरी (ii, jj)' लिखना और 'std :: distance' प्राप्त करना संभव होगा। –