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

সি++ প্রোগ্রাম: পলিনোমিয়ালের ডেরিভেটিভ নির্ণয়


একটি স্ট্রিং হিসেবে পলিনোমিয়ালের টার্ম দেওয়া আছে; কাজ হল সেই পলিনোমিয়ালের ডেরিভেটিভ (অবকলন) মান নির্ণয় করা।

পলিনোমিয়াল কী?

পলিনোমিয়াল শব্দটি দুটি শব্দের মিশ্রণ: "পলি" অর্থ "অনেক" এবং "নোমিয়াল" অর্থ "পদ"। পলিনোমিয়াল এক্সপ্রেশন হল এমন একটি এক্সপ্রেশন যাতে ভেরিয়েবল, কোএফিসিয়েন্ট এবং এক্সপোনেন্ট থাকে, এবং যাতে কেবল যোগ, বিয়োগ, গুণ ভাগ অপারেশন থাকে।

পলিনোমিয়ালের উদাহরণ: x² + x + 1

পলিনোমিয়াল p(x) = mxⁿ এর ডেরিভেটিভ হবে:

m * n * x⁽ⁿ⁻¹⁾

উদাহরণ

ইনপুট: str = "2x^3 +1x^1 + 3x^2"   val = 2
আউটপুট: 37
ব্যাখ্যা: 6x² + 1x⁰ + 6x¹
x = 2 বসালে: 6*4 + 1 + 6*2 = 24 + 1 + 12 = 37

ইনপুট: str = "1x^3"   val = 2
আউটপুট: 12
ব্যাখ্যা: 1 * 3 * x²
x = 2 বসালে: 3 * 4 = 12

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

  • ইনপুট হিসেবে একটি স্ট্রিং এবং x এর মান নিন।
  • স্ট্রিং ট্রাভার্স করে ডিজিট এবং ভেরিয়েবল চেক করুন।
  • '+' চিহ্ন পাওয়া পর্যন্ত স্ট্রিং ট্রাভার্স এবং যোগ করুন।
  • তারপর m * n * x⁽ⁿ⁻¹⁾ ফর্মুলা ব্যবহার করুন।
  • ফলাফল রিটার্ন করুন।

অ্যালগরিদম

Start
Step 1→ ফাংশন long long term(string polyterm, long long val) এ
    coeffStr = "" ডিক্লেয়ার ও ইনিশিয়ালাইজ করুন
    i ডিক্লেয়ার করুন
    For i = 0; polyterm[i] != 'x'; i++ লুপ
        coeffStr.push_back(polyterm[i]) কল করুন
    coeff = atol(coeffStr.c_str()) সেট করুন
    powStr = "" ডিক্লেয়ার ও ইনিশিয়ালাইজ করুন
    For i = i + 2; i != polyterm.size(); i++ লুপ
        powStr.push_back(polyterm[i])
    power = atol(powStr.c_str()) সেট করুন
    Return coeff * power * pow(val, power - 1)

Step 2→ ফাংশন long long value(string& str, int val) এ
    ans = 0 সেট করুন
    istringstream is(str) কল করুন
    string polyterm ডিক্লেয়ার করুন
    While is >> polyterm লুপ
        If polyterm == "+" হয়
            Continue করুন
        Else
            ans = ans + term(polyterm, val) সেট করুন
    Return ans

Step 3→ ফাংশন int main() এ
    str = "2x^3 + 1x^1 + 3x^2" ডিক্লেয়ার ও ইনিশিয়ালাইজ করুন
    val = 2 ডিক্লেয়ার ও ইনিশিয়ালাইজ করুন
    value(str, val) থেকে প্রাপ্ত মান প্রিন্ট করুন
Stop

সি++ কোড উদাহরণ

#include <iostream>
#include <sstream>
#include <cmath>
#include <string>
using namespace std;

long long term(string polyterm, long long val) {
    string coeffStr = "";
    int i;
    for (i = 0; polyterm[i] != 'x'; i++)
        coeffStr.push_back(polyterm[i]);
    long long coeff = atol(coeffStr.c_str());

    string powStr = "";
    for (i = i + 2; i != polyterm.size(); i++)
        powStr.push_back(polyterm[i]);
    long long power = atol(powStr.c_str());

    return coeff * power * pow(val, power - 1);
}

long long value(string& str, int val) {
    long long ans = 0;
    istringstream is(str);
    string polyterm;
    while (is >> polyterm) {
        if (polyterm == "+")
            continue;
        else
            ans = ans + term(polyterm, val);
    }
    return ans;
}

int main() {
    string str = "2x^3 + 1x^1 + 3x^2";
    int val = 2;
    cout << value(str, val);
    return 0;
}

আউটপুট

37

  1. C++-এ পিরামিডের ভলিউম বের করার প্রোগ্রাম

  2. C++-এ অক্টাহেড্রনের সারফেস এরিয়া বের করার প্রোগ্রাম

  3. C++-এ ডোডেকাহেড্রনের সারফেস এরিয়া বের করার প্রোগ্রাম

  4. C++-এ কুইকসর্ট (QuickSort) প্রোগ্রাম