Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

जाँच करें कि क्या यह C++ में एक सीधी रेखा है

मान लीजिए कि हमारे पास (x, y) निर्देशांक वाले डेटा-बिंदुओं की एक सूची है, हमें यह जांचना होगा कि डेटा-बिंदु सीधी रेखा बना रहे हैं या नहीं। अतः यदि बिंदु [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7)] जैसे हैं, तो वे सीधी रेखा बना रहे हैं ।

इसे हल करने के लिए, हम लगातार प्रत्येक डेटापॉइंट के बीच अंतर लेंगे, और ढलान का पता लगाएंगे। पहले वाले के लिए ढलान का पता लगाएं। अन्य सभी बिंदुओं के लिए जांचें कि ढलान समान है या नहीं। यदि वे समान हैं, तो बस सही लौटें, अन्यथा गलत

उदाहरण

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int gcd(int a, int b){
      return !b?a:gcd(b,a%b);
   }
   bool checkStraightLine(vector<vector<int>>& c) {
      bool ans =true;
      bool samex = true;
      bool samey = true;
      int a = c[1][0]-c[0][0];
      int b = c[1][1]-c[0][1];
      int cc = gcd(a,b);
      a/=cc;
      b/=cc;
      for(int i =1;i<c.size();i++){
         int x = c[i][0]-c[i-1][0];
         int y = c[i][1]-c[i-1][1];
         int z = gcd(x,y);
         x/=z;
         y/=z;
         ans =ans &&(x == a )&& (y == b );
      }
      return ans;
   }
};
main(){
Solution ob;
vector<vector<int>> c = {{1,2},{2,3},{3,4},{4,5},{5,6},{6,7}};
cout << ob.checkStraightLine(c);
}

इनपुट

[[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]

आउटपुट

1
(1 indicates true)

  1. सी ++ में एक लाइन पर मैक्स पॉइंट्स

    मान लीजिए कि हमारे पास 2D प्लेन है। हमें एक ही सीधी रेखा पर रहने वाले बिंदुओं की अधिकतम संख्या ज्ञात करनी है। तो अगर अंक इस तरह हैं - फिर 4 अंक होते हैं इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - n :=अंकों की संख्या, यदि n <3 है, तो n लौटाएं उत्तर :=2 मैं के लिए 1 से n - 1 की सीमा

  1. जाँच करें कि कोई रेखा C++ में वृत्त को स्पर्श करती है या प्रतिच्छेद करती है

    मान लीजिए हमारे पास एक वृत्त और दूसरी सीधी रेखा है। हमारा कार्य यह पता लगाना है कि रेखा वृत्त को स्पर्श करती है या उसे काटती है, अन्यथा वह बाहर से होकर गुजरती है। तो नीचे की तरह तीन अलग-अलग मामले हैं - यहां हम इसे निम्नलिखित चरणों द्वारा हल करेंगे। ये नीचे की तरह हैं - केंद्र के बीच लंबवत P ढूंढ

  1. C++ में idempotent मैट्रिक्स की जांच करने का कार्यक्रम

    एक मैट्रिक्स दिया गया है M[r][c], r पंक्तियों की संख्या को दर्शाता है और c कॉलम की संख्या को दर्शाता है जैसे कि r =c एक वर्ग मैट्रिक्स बनाता है। हमें यह जांचना है कि दिया गया वर्ग मैट्रिक्स एक बेकार मैट्रिक्स . है या नहीं या नहीं। बेकार मैट्रिक्स एक मैट्रिक्स M को बेवकूफ मैट्रिक्स . कहा जाता है य