এই সমস্যায়, আমরা একটি সংখ্যা n দেওয়া হয়. আমাদের কাজ হল সিরিজের যোগফল খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা 1 + (1+3) + (1+3+5) + (1+3+5+7) + …… + (1+3+) 5+7+…+(2n-1))।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট: n =5
আউটপুট: ৫৫
সুতরাং, প্রশ্ন অনুসারে ধরুন একজন ব্যবহারকারী আমাদের একটি সংখ্যা 'n' দেন এবং আমাদের সিরিজ যোগ করতে হবে 1 + (1+3) + (1+3+5) + (1+3+5+7) +…… + (1+3+5+7+…+(2n-1))।
আগে এই সিরিজের অর্থটা ভালো করে বুঝে নেওয়া যাক।
আমরা n=1 নিই, তারপর সিরিজটি 1 হয়ে যায়।
আমরা n=2 নিই, তারপর সিরিজটি 1+ (1+3) হয়ে যায় কারণ শেষ পদ 2n-1-এর মান হিসাবে গণনা করা যেতে পারে, 2 গুণ 2 1 ছাড়িয়ে, যা 3।
n এর মান | 2n-1 | সিরিজ হয়ে যায় |
1 | 1 | 1 |
2 | 3 | 1+ (1+3) |
3 | 5 | 1+ (1+3) + (1+3+5) |
4 | 7 | 1+ (1+3) + (1+3+5) + (1+3+5+7) |
সমস্যার সমাধানে আসা, এটি দুটি উপায়ে সমাধান করা যেতে পারে। একটি হবে গাণিতিক যেখানে মোট যোগফলের একটি অভিব্যক্তি পাওয়া যাবে এবং তাই কোনো লুপের প্রয়োজন নেই। অন্যটি কোডে দুটি লুপ প্রয়োগ করতে হবে।
লুপ ব্যবহার করে সরাসরি পদ্ধতি
যেহেতু এটি দেখা যায় যে সিরিজের শব্দটি 1 + (1+3) + (1+3+5) + (1+3+5+7) + …… + (1+3+5+7+… +(2n-1)) নিজেই একটি সিরিজ। তাই আমরা নেস্টেড লুপ ব্যবহার করব। বাইরের লুপ দ্বিতীয় মেয়াদ গণনা করবে। যদিও অভ্যন্তরীণ লুপ শব্দটি নিজেই গণনা করতে ব্যবহার করা হবে।
উদাহরণ
#include<stdio.h> int calcSum(int n){ int sum = 0; for (int i = 1; i <= n; i++) { // the first value of the term is always 1 int value = 1; for (int j = 1; j <= i; j++) { sum += value; // next term value += 2; } } return sum; } int main(){ int n = 35; printf("The sum of the series upto %d is %d ", n , calcSum(n)); }
আউটপুট
The sum of the series upto 35 is 14910
প্রোগ্রামের কাজ:
- ব্যবহারকারী n এর মান প্রবেশ করে। ধরা যাক, 2.
- "সমষ্টি" নামের একটি ভেরিয়েবলকে 0 হিসাবে প্রাথমিক মান সহ ঘোষণা করা হয়
- যখন i=1, শর্ত i<=n এর জন্য সত্য এবং তাই লুপ কাজ করবে
- "ft" ভেরিয়েবলের মান হল 1।
- j-এর প্রথম মান হল 1। শর্তটি সত্য কারণ j-এর মান i-এর মানের সমান, যা হল 1। তাই j লুপ কাজ করে
- ft এর মান যোগফলের সাথে যোগ করা হয়। তাই যোগফল 0+1 এর সমান 1 হয়।
- ft-এর মান পরিবর্তন করা হয়েছে এবং 2 দ্বারা বৃদ্ধি করা হয়েছে, তাই এর নতুন মান হল 1+2 =3
- j-এর মান 1 বেড়ে 2 হয়ে যায়।
- কিন্তু এখন লুপের ভিতরের শর্ত মিথ্যা, যেমন j>i এখন। তাই j লুপ প্রস্থান করা হয়েছে।
- এখন i এর মান 1 বেড়ে 2 হয়ে যায়, তাই i=2 এবং শর্তটি সত্য i<=n, তাই লুপে প্রবেশ করে
- ভেরিয়েবল “ft” এর মান আবার 1 হিসাবে সংজ্ঞায়িত করা হয়েছে
- যখন j এর মান 1 হয়, তখন লুপটি j
- ft এর মান যোগফলের সাথে যোগ করা হয়। যোগফলের মান ইতিমধ্যে 1। সুতরাং যোগফলের নতুন মান হল 1+1 =2
- ft-এর মান পরিবর্তিত এবং 2 দ্বারা বৃদ্ধি করা হয়, তাই ft-এর নতুন মান 1+2 =3 হয়।
- j এর মান 1 বেড়ে 2 হয়ে যায়। লুপের শর্তটি সত্য কারণ j i এর সমান।
- ft এর মান যোগফলের সাথে যোগ করা হয়। যোগফলের মান ইতিমধ্যেই 2। সুতরাং যোগফলের নতুন মান হল 2+3 =5
- ft-এর মান পরিবর্তিত এবং 2 দ্বারা বৃদ্ধি করা হয়, তাই ft-এর নতুন মান 3+2 =5 হয়ে যায়।
- লুপটি বিদ্যমান
- এখন i এর মান 1 বেড়ে 3 হয়ে যায়, তাই i=3 এবং শর্তটি মিথ্যা i<=n, তাই লুপ থেকে বেরিয়ে যায়।
- স্ক্রীনে বার্তা এবং যোগফলের মান প্রিন্ট করে
গাণিতিক সমাধান:
প্রশ্নের একটি গাণিতিক সমাধান খুঁজে বের করে কোডটি লিখে, আমাদের কোডকে অনেকাংশে সরল করে তুলবে।
সাধারণ শব্দটিকে Tn ধরা যাক সিরিজের,
আরও এগিয়ে যাওয়ার আগে, আমাদের জানা উচিত যে সিরিজ 1+3+5+7+9…..(2n-1) এর যোগফল হবে n 2, এবং সিরিজ
1 2 +2 2 ৷ +3 2 +4 2 ....n 2 i 2 এর যোগফল থাকবে =
আমাদের কোডের কাজ চিত্রিত করার জন্য প্রোগ্রাম
উদাহরণ
#include<stdio.h> int calcSum(int n){ // required sum return (( (n) * (n + 1) * (2*n + 1 ) )/6 ) ; } int main(){ int n = 35; printf("The sum of the series upto %d is %d ", n , calcSum(n)); }
আউটপুট
The sum of the series upto 35 is 14910
উপরের কোডের কাজ:
উদাহরণ স্বরূপ, ধরা যাক ব্যবহারকারী n এর মান 2 হিসাবে প্রবেশ করেছে, তারপর 2n-1 এর মান 3 এবং সিরিজটি 1+ (1+3) হয়ে যায়।
তবে আসুন কোডের মাধ্যমে যোগফল বুঝতে এবং প্রাপ্ত করি।
- ফাংশন যোগফলকে 2 মান দিয়ে ডাকা হয়
- ফাংশনটি 5 এর মান গণনা করে এবং এটিকে প্রধান ফাংশনে ফিরিয়ে দেয়।
- উত্তর সহ বার্তাটি স্ক্রিনে প্রিন্ট করা হয়েছে।