কম্পিউটার টিউটোরিয়াল

সি++-এ নদীর ধারা ও আপ ও ডাউনস্ট্রিমের সময়ের অনুপাত থেকে মানুষের গতি বের করা

এই সমস্যাতে, আমাদের দুটি মান S এবং N দেওয়া আছে যা নদীর ধারার গতি (কিমি/ঘণ্টা) এবং আপস্ট্রিম ও ডাউনস্ট্রিমে যাওয়ার সময়ের অনুপাত বোঝায়। আমাদের কাজ হলো নদীর ধারার গতি এবং আপ ও ডাউনস্ট্রিমের সময়ের অনুপাত থেকে মানুষের গতি বের করা।

উদাহরণ দিয়ে সমস্যা বোঝা যাক,

ইনপুট

S = 5, N = 2

আউটপুট

15

সমাধানের পদ্ধতি

এই সমস্যার একটি সহজ সমাধান হলো নৌকা চালানোর গাণিতিক সূত্র ব্যবহার করা। চলুন দেখি সূত্রটি কিভাবে কাজ করে:

মানুষের গতি = x কিমি/ঘণ্টা
নদীর ধারার গতি = S কিমি/ঘণ্টা
ধারার সাথে (downstream) মানুষের গতি = (x+S) কিমি/ঘণ্টা
ধারার বিপরীত (upstream) মানুষের গতি = (x-S) কিমি/ঘণ্টা
ধারার সাথে দূরত্ব পার করার সময় = T
ধারার বিপরীত দূরত্ব পার করার সময় = n*T
ধারার বিপরীত দূরত্ব = (x - S)*n*T
ধারার সাথে দূরত্ব = (x + S)*T
যেহেতু দুটি দূরত্ব একই, (x + S) * T = (x - S)*n*T
x + S = nx - nS
S + nS = nx - x
S*(n + 1) = x(n - 1)

$$x=\frac{S*(n+1)}{(n-1)}$$

সমাধান কোড:

উদাহরণ

#include <iostream>
using namespace std;

float calcManSpeed(float S, int n) {
    return ( S * (n + 1) / (n - 1) );
}

int main() {
    float S = 12;
    int n = 3;
    cout<<"The speed of man is "<<calcManSpeed(S, n)<<" km/hr";
    return 0;
}

আউটপুট

The speed of man is 24 km/hr
  1. C++-এ গতি এবং ট্রেনের দৈর্ঘ্য ব্যবহার করে সেতুর দৈর্ঘ্য বের করার প্রোগ্রাম

  2. C++-এ কুলডাউন সহ স্টক কেনা-বেচার সর্বোচ্চ লাভ (Best Time to Buy and Sell Stock with Cooldown)

  3. সি++ প্রোগ্রাম: O(n) টাইম ও O(1) এক্সট্রা স্পেসে ডুপ্লিকেট খুঁজে বের করা (Set 1)

  4. C++-এ দিয়ে गये GCD এবং LCM থেকে যেকোনো পেয়ার খুঁজে বের করা