यह एक C++ प्रोग्राम है जो जांचता है कि दिए गए तीन बिंदु एक सीधी रेखा पर हैं या नहीं। तीन बिंदु एक सीधी रेखा पर होते हैं यदि इन बिंदुओं द्वारा बने त्रिभुज का क्षेत्रफल शून्य के बराबर होता है।
त्रिभुज का क्षेत्रफल है:
0.5 * (x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2))
एल्गोरिदम
Begin
बिंदुओं को रैंडमली जनरेट करें।
उपरोक्त फॉर्मूला का उपयोग करके क्षेत्रफल की गणना करें।
यदि क्षेत्रफल > 0
तो बिंदु सीधी रेखा पर नहीं हैं।
अन्यथा यदि क्षेत्रफल < 0
तो बिंदु सीधी रेखा पर नहीं हैं।
अन्यथा
बिंदु सीधी रेखा पर हैं।
End
उदाहरण
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
static int L = 1;
static int U = 20;
int main(int argc, char **argv) {
int x3, y3, x1, x2, y1, y2;
time_t seconds;
time(&seconds);
srand((unsigned int) seconds);
// rand() का उपयोग करके बिंदुओं को रैंडमली जनरेट करें
x1 = rand() % (U - L + 1) + L;
y1 = rand() % (U - L + 1) + L;
x2 = rand() % (U - L + 1) + L;
y2 = rand() % (U - L + 1) + L;
x3 = rand() % (U - L + 1) + L;
y3 = rand() % (U - L + 1) + L;
cout << "The points are: (" << x1 << ", " << y1 << "), (" << x2 << ", " << y2 << "), & (" << x3 << ", " << y3 << ")\n";
// क्षेत्रफल की गणना करें
float a = 0.5 * (x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2));
if(a < 0)
cout << "The points don't lie on the straight line";
else if(a > 0)
cout << "The points don't lie on the straight line";
else
cout << "The points lie on the straight line";
return 0;
}
आउटपुट
The points are: (20, 9), (6, 13), & (13, 11) The points lie on the straight line The points are: (9, 15), (4, 15), & (11, 16) The points don't lie on the straight line
कोलिनियरिटी (संरेखता) की जांच के लिए त्रिभुज क्षेत्रफल विधि का उपयोग किया जाता है। यदि तीन बिंदुओं (x1,y1), (x2,y2), (x3,y3) द्वारा बने त्रिभुज का क्षेत्रफल 0 है, तो वे संरेख हैं। फॉर्मूला 0.5 * |x1(y2-y3) + x2(y3-y1) + x3(y1-y2)| है। यह क्रॉस प्रोडक्ट विधि (x2-x1)*(y3-y1) == (x3-x1)*(y2-y1) के बराबर है।