এই সমস্যায়, আমাদের একটি সংখ্যা n দেওয়া আছে যা সিরিজ 1/(1*2) + 1/(2*3) +…+ 1/(n*(n+1))-এর nth টার্ম। আমাদের কাজ হল সিরিজের যোগফল নির্ণয় করার জন্য একটি প্রোগ্রাম তৈরি করা।
উদাহরণ দিয়ে বোঝা যাক
ইনপুট
n = 3
আউটপুট
0.75
ব্যাখ্যা - যোগফল = 1/(1*2) + 1/(2*3) + 1/(3*4) = ½ + ⅙ + 1/12 = (6+2+1)/12 = 9/12 = ¾ = 0.75
এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল লুপ ব্যবহার করা। এবং সিরিজের প্রতিটি উপাদানের মান ক্যালকুলেট করা। তারপর সেগুলো যোগফল ভ্যালুতে যোগ করা।
আলগরিদম
যোগফল = 0 আরম্ভ করুন
ধাপ ১: i = 1 থেকে n পর্যন্ত ইটারেট করুন। এবং অনুসরণ করুন:
ধাপ ১.১: যোগফল আপডেট করুন, sum += 1/ ( i*(i+1) )
ধাপ ২: যোগফল প্রিন্ট করুন।
C++ প্রোগ্রাম উদাহরণ (লুপ পদ্ধতি)
#include <iostream>
using namespace std;
double calcSeriesSum(int n) {
double sum = 0.0;
for (int i = 1; i <= n; i++)
sum += ((double)1/(i*(i+1)));
return sum;
}
int main() {
int n = 5;
cout<<"Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is "<<calcSeriesSum(n);
return 0;
}
আউটপুট
Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is 0.833333
এই সমাধান অনেক দক্ষ নয় কারণ এটি লুপ ব্যবহার করে।
দক্ষ পদ্ধতি: সিরিজের যোগফলের সাধারণ ফর্মুলা
সিরিজটি হল 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + … n-th টার্ম হল 1/n(n+1). aₙ = 1/n(n+1) aₙ = ((n+1) - n) / n(n+1) aₙ = (n+1)/n(n+1) - n/ n(n+1) aₙ = 1/n - 1/(n+1) সিরিজের যোগফল: যোগফল = 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + … প্রতিটি টার্ম উপরের ফর্মুলা অনুযায়ী পরিবর্তন করলে, যোগফল = 1/1 - ½ + ½ - ⅓ + ⅓ - ¼ + ¼ - ⅕ + … + 1/n - 1/(n+1) যোগফল = 1 - 1/(n+1) যোগফল = (n+1 - 1) / (n+1) = n/(n+1)
C++ প্রোগ্রাম উদাহরণ (ফর্মুলা পদ্ধতি)
#include <iostream>
using namespace std;
double calcSeriesSum(int n) {
return ((double)n/ (n+1));
}
int main() {
int n = 5;
cout<<"Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is "<<calcSeriesSum(n);
return 0;
}
আউটপুট
Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is 0.833333