इस समस्या में, हमें तीन संख्याएं a, d, और n दी गई हैं। हमारा कार्य C++ में हार्मोनिक श्रृंखला का योग ज्ञात करने का एक प्रोग्राम बनाना है।
हार्मोनिक प्रोग्रेशन एक श्रृंखला है जिसका व्युत्क्रम एक अंकगणितीय प्रोग्रेशन होगा। अर्थात यदि हार्मोनिक प्रोग्रेशन A1, A2, A3.. An के लिए, एक अंकगणितीय प्रोग्रेशन 1/A1, 1/A2, 1/A3 है।
तो, एक सामान्य HP है
1/a, 1/(a+d), 1/(a+2d), … 1/(a + nd)
जहां 1/a पहला पद है। और d व्युत्क्रम AP का सर्वांगसम अंतर है।
समस्या विवरण - यहां, हमें HP का पहला पद a, सर्वांगसम अंतर d, और पदों की संख्या n दी जाएगी। और हमें इसका योग ढूंढना होगा।
आइए एक उदाहरण लेकर समस्या को समझते हैं
इनपुट
a = 3, d = 2, n = 5
आउटपुट
0.878211
व्याख्या
HP है 1/3, 1/5, 1/7, 1/9, 1/11।
योग = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 = 0.878211
समाधान दृष्टिकोण
हम nवें पद तक पुनरावृति करेंगे और HP के प्रत्येक पद का मान ढूंढकर उसे sumVar में जोड़ेंगे। और अंत में sumVal लौटाएंगे।
एल्गोरिदम
आरंभ करें - sumVal = 0, term = 0;
- चरण 1 - i -> 1 से n तक लूप
- चरण 1.1 - पद ढूंढें, term = 1/( a + (i-1)*(d).
- चरण 1.2 - sumVal अपडेट करें, sumVal += term।
- चरण 2 - sumVal प्रिंट करें।
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
उदाहरण
#include <iostream> using namespace std; float findSeriesSum(int a, int d, int n){ float sumVal = 0; float term = 0; for(float i = 1; i <= n; i++){ term = (1.0)/(float)(a + (i-1)*d); sumVal += term; } return sumVal; } int main(){ int n = 5, a = 3, d = 2; cout<<"The sum of HP is "<<findSeriesSum(a, d, n); return 0; }आउटपुट
The sum of HP is 0.878211
एक और दृष्टिकोण पुनरावर्ती फ़ंक्शन का उपयोग करके योग ढूंढना हो सकता है।
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
उदाहरण
#include <iostream> using namespace std; float findSeriesSum(int a, int d, int n){ if(n == 1){ return (float)(1.0)/a; } float term = (1.0)/ (float)(a + (n-1)*d); return term + findSeriesSum(a, d, n-1); } int main(){ int n = 5, a = 3, d = 2; cout<<"The sum of HP is "<<findSeriesSum(a, d, n); return 0; }आउटपुट
The sum of HP is 0.878211