Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

다항식의 미분을 위한 C++ 프로그램

<시간/>

다항식 항을 포함하는 문자열이 주어지면 작업은 해당 다항식의 도함수를 평가하는 것입니다.

다항식이란 무엇입니까?

다항식은 "많은"을 의미하는 "Poly"와 많은 용어로 구성된 "항"을 의미하는 "항"이라는 두 단어에서 유래합니다. 다항식은 변수, 계수 및 지수를 포함하는 표현식으로 변수의 덧셈, 곱셈 및 뺄셈과 같은 연산만 포함합니다.

다항식의 예

x2+x+1

다항식의 도함수 p(x) =mx^n은 -

가 됩니다.

m * n * x^(n-1)

예시

Input: str = "2x^3 +1x^1 + 3x^2"
   val = 2
Output: 37
Explanation: 6x^2 + 1x^0 + 6x^1
   Putting x = 2
   6*4 + 1 + 6*2 = 24 + 1 + 12 = 37

Input: str = “1x^3”
   val = 2
Output: 12
Explanation: 1 * 3 *x^2
   Putting x = 2
   3 * 4 = 12

위 문제를 해결하기 위해 사용할 접근 방식 -

  • 문자열과 x 값으로 입력
  • 이제 문자열을 탐색하고 숫자와 변수를 확인합니다.
  • '+'를 찾을 때까지 문자열을 계속 추가하고 탐색합니다.
  • m * n * x^(n-1).
  • 결과를 반환합니다.

알고리즘

Start
Step 1-> In function long long term(string polyterm, long long val)
   Declare and initialize coeffStr = "”
   Declare i
   Loop For i = 0 and polyterm[i] != 'x' and i++
      Call coeffStr.push_back(polyterm[i])
      Set coeff = atol(coeffStr.c_str()
      Declare and initialize powStr = ""
      Loop For i = i + 2 and i != polyterm.size() and i++ powStr.push_back(polyterm[i])
         Set power = atol(powStr.c_str());
   Return coeff * power * pow(val, power - 1)
Step 2-> In function long long value(string& str, int val)
   Set ans = 0
   Call istringstream is(str)
   Declare string polyterm
   Loop While is >> polyterm
      If polyterm == "+” then,
         Continue
      Else
         Set ans = (ans + term(polyterm, val))
   Return ans
Step 3-> In function int main()
   Declare and initialize str = "2x^3 + 1x^1 + 3x^2"
   Declare and initialize val = 2
   Print the value received by value(str, val)
Stop

예시

#include
using namespace std;
long long term(string polyterm, long long val) {
   //to find the coefficient
   string coeffStr = "";
   int i;
   for (i = 0; polyterm[i] != 'x'; i++)
      coeffStr.push_back(polyterm[i]);
   long long coeff = atol(coeffStr.c_str());
   // to get the power value
   string powStr = "";
   for (i = i + 2; i != polyterm.size(); i++)
      powStr.push_back(polyterm[i]);
   long long power = atol(powStr.c_str());
   // For ax^n, we return a(n-1)x^(n-1)
   return coeff * power * pow(val, power - 1);
}
long long value(string& str, int val) {
   long long ans = 0;
   // using istringstream to get input in tokens
   istringstream is(str);
   string polyterm;
   while (is >> polyterm) {
      // check if the token is equal to '+' then
      // continue with the string
      if (polyterm == "+")
         continue;
         // Otherwise find the derivative of that
         // particular term
      else
         ans = (ans + term(polyterm, val));
   }
   return ans;
}
// main function
int main() {
   string str = "2x^3 + 1x^1 + 3x^2";
   int val = 2;
   cout << value(str, val);
   return 0;
}

출력

37