কম্পিউটার

C++ এ নিয়মিত N পার্শ্বযুক্ত বহুভুজে তৃতীয় ব্যক্তির অবস্থান নির্ণয় কর?


একটি N পার্শ্বযুক্ত বহুভুজে যদি দুটি শিশু A এবং B শীর্ষবিন্দুতে দাঁড়িয়ে থাকে তবে আমাদের শীর্ষস্থানীয় সংখ্যা নির্ধারণ করতে হবে যেখানে অন্য একজন ব্যক্তি দাঁড়ানো উচিত যাতে সেই ব্যক্তির দ্বারা A এবং B উভয়ে পৌঁছানোর জন্য ন্যূনতম সংখ্যক লাফের প্রয়োজন হয়। পি>

এখানে উল্লেখ্য দুটি শর্ত হল যে বহুভুজ শীর্ষবিন্দুগুলি ঘড়ির কাঁটার দিকে সংখ্যাযুক্ত এবং একাধিক উত্তর থাকলে আমরা সর্বদা সর্বনিম্ন সংখ্যাযুক্ত শীর্ষবিন্দু বেছে নেব৷

vertexPosition(int sides, int vertexA, int vertexB) নম্বর নেয়। বহুভুজের বাহুর এবং শীর্ষবিন্দু A এবং B এর অবস্থান। ফর লুপ 1 থেকে শুরু হয় এবং i যতক্ষণ না বাহুর সংখ্যার থেকে কম বা সমান হয় ততক্ষণ পর্যন্ত পুনরাবৃত্তি হয়। যদি i vertexA এবং vertexB এর সমান না হয় তাহলে i এবং vertex A এর মধ্যে এবং একইভাবে i এবং vertexB এর মধ্যে পরম পার্থক্য গণনা করা হয় এবং যথাক্রমে x এবং y তে সংরক্ষণ করা হয়।

int vertexPosition(int N, int vertexA, int vertexB){
   int tempSum = INT_MAX;
   int sum = 0;
   int position = 0;
   for (int i = 1; i <= N; i++) {
      if (i != vertexA && i != vertexB){
         int x = abs(i - vertexA);
         int y = abs(i - vertexB);

এরপরে আমরা x এবং y এর যোগফলকে sum ভেরিয়েবলে সংরক্ষণ করি এবং যোগফলটি tempSum থেকে কম কিনা তা পরীক্ষা করি। যদি এটি tempSum-এর থেকে কম হয় তবে বর্তমান সমষ্টি মানটি tempSum-এ বরাদ্দ করা হয় এবং বর্তমান সূচকের মান পজিশন ভেরিয়েবলে বরাদ্দ করা হয়। আমরা পরীক্ষা করি যে নতুন প্রাপ্ত যোগফল tempSum-এ সংরক্ষিত আগের যোগফলের চেয়ে কম বা if স্টেটমেন্টে নয় যাতে আমরা A এবং B থেকে সবচেয়ে কাছের অবস্থান N হতে পারে। লুপ শেষ হওয়ার পরে পজিশনটি ফেরত দেওয়া হয়।

         sum = x + y;
         if (sum < tempSum){
            tempSum = sum;
            position = i;
         }
      }
   }
   return position;
}

উদাহরণ

নিয়মিত N পার্শ্বযুক্ত বহুভুজে তৃতীয় ব্যক্তির অবস্থান নির্ণয় করতে আমরা নিম্নলিখিত বাস্তবায়ন দেখি।

#include <iostream>
using namespace std;
int vertexPosition(int N, int vertexA, int vertexB){
   int tempSum = INT_MAX;
   int sum = 0;
   int position = 0;
   for (int i = 1; i <= N; i++) {
      if (i != vertexA && i != vertexB){
         int x = abs(i - vertexA);
         int y = abs(i - vertexB);
         sum = x + y;
         if (sum < tempSum){
            tempSum = sum;
            position = i;
         }
      }
   }
   return position;
}
int main(){
   int N = 6, vertexA = 2, vertexB = 4;
   cout << "The vertex on which N should stand = " << vertexPosition(N, vertexA, vertexB);
   return 0;
}

আউটপুট

উপরের কোডটি নিম্নলিখিত আউটপুট −

তৈরি করবে
The vertex on which N should stand = 6

  1. C++ এ ধাঁধা III

  2. C++ এ একটি বৃত্তের বিপরীতে একজন ব্যক্তির অবস্থান

  3. C++ এ একটি সিলিন্ডারের পরিধি খুঁজুন

  4. C++-এ ম্যাট্রিক্সের চূড়ান্ত কোষের অবস্থান