for লুপ ব্যবহার করে বিভিন্ন সমস্যার সমাধান (ব্যাখ্যা সহ)


Q1. for লুপ ব্যবহার করে 1 থেকে n পর্যন্ত স্বাভাবিক সংখ্যার বর্গের যোগফল নির্ণয়ের C প্রোগ্রাম লিখ। অথবা,

12+22+32+………………………N2=S হলে S এর মান নির্ণয়ের C প্রোগ্রাম লিখ।

#include<stdio.h>
#include<conio.h>
int main()
{
 int i, n, s=0;
 printf("Enter any integer number: \n");
 scanf("%d", &n);
 for(i=0; i<=n; i++)
 s=s+(i*i);
 printf("The square sum of numbers from 1 to %d is %d", n, s);
}

ব্যাখ্যাঃ

(১) int i,n; এর মাধ্যমে i, n, s নামের integer টাইপের তিনটি চলক ঘোষণা করা হয়েছে। এবং s এর শুরু মান 0 নির্ধারণ করা হয়েছে।

(২) printf(“Enter any integer number: \n”); এই স্টেটমেন্টের মাধ্যমে আউটপুটে Enter any integer number: লেখা দেখা যাবে। Enter any integer number: লেখাটি ইউজারের জন্য একটি নির্দেশনা। ইউজার কি বোর্ডের মাধ্যমে একটি সংখ্যা ইনপুট দিবে। 

(৩) scanf(“%d”, &n); এর মাধ্যমে ইউজার কর্তৃক প্রদত্ত সংখ্যাটি n এর মেমরি এড্রেসে সংরক্ষিত হবে। ধরা যাক, ইউজার কিবোর্ড থেকে 100 ইনপুট দিল। ফলে n=100 হবে।

(৪) for(i=1; i<=n; i++)

   s=s+(i*i);

  printf(“The sum of numbers from 1 to %d is %d”, n, s);

এর মাধ্যমে আউটপুটে 1 থেকে n পর্যন্ত স্বাভাবিক সংখ্যাগুলোর বর্গের যোগফল অর্থাৎ  1 থেকে 100 পর্যন্ত স্বাভাবিক সংখ্যাগুলোর যোগফল (338350) প্রদর্শিত হবে।

এখানে বলে রাখা দরকার যে, for লুপ সংশ্লিষ্ট statement টি হল s=s+i; অর্থাৎ, এই for লুপের সাহায্যে s=s+i; স্টেটমেন্টটিকে 100 বার রান করানো হবে। কিন্তু printf(“The sum of numbers from 1 to %d is %d”, n, s); স্টেটমেন্টটি for লুপের সাথে সংশ্লিষ্ট নয় বলে সেটি লুপ শেষে 1 বার কার্যকর হবে।

উপরের for লুপের iteration steps (ধাপসমূহ) নিচে উল্লেখ করা হল-

ধাপ-১: ধাপ-১ এর শুরুতে i এর মান 1 হবে অর্থাৎ i=1 এবার কম্পাইলার i<=n; কে এভাবে ইন্টারপ্রিট করবে:

i কী n এর চেয়ে ছোট অথবা সমান?

বা 1 কী 100 এর চেয়ে ছোট অথবা সমান?

উত্তরঃ সত্য।

উত্তর সত্য বলে কম্পাইলার for সংশ্লিষ্ট statement অর্থাৎ s=s+i; কে কার্যকর করবে।

s=s+(i*i);

বা, s=0+(1*1)=1 হবে [কারণ, s=0, i=1]

এরপর i++ এর কারণে i এর মান 1 থেকে বৃদ্ধি পেয়ে 2 হবে। এবং ধাপ-১ এর সমাপ্তি ঘটবে।

ধাপ-২: ধাপ-২ এর শুরুতে i এর মান 2 হবে অর্থাৎ i=2 এবার কম্পাইলার i<=n; কে এভাবে ইন্টারপ্রিট করবে:

i কী 100 এর চেয়ে ছোট অথবা সমান?

বা 2 কী 100 এর চেয়ে ছোট অথবা সমান?

উত্তরঃ সত্য।

উত্তর সত্য বলে কম্পাইলার for সংশ্লিষ্ট statement অর্থাৎ s=s+i; কে কার্যকর করবে।

s=s+(i*i);

বা, s=1+(2*2)=5 হবে [কারণ, s=1, i=2]

এরপর i++ এর কারণে i এর মান 2 থেকে বৃদ্ধি পেয়ে 3 হবে। এবং ধাপ-২ এর সমাপ্তি ঘটবে।

… (ধাপ চলমান)

এভাবে প্রতি ধাপে i এর মান এক এক করে বৃদ্ধি পাবে এবং বৃদ্ধি পাবার পর সেই i এর মান s এর সাথে যোগ হবে এবং যোগফল আবার s এর মধ্যে জমা হবে। অর্থাৎ s এর নতুন মান হবে s পূর্ববর্তী মান এবং i এর নতুন মানের যোগফল।

এভাবে i এর মান বৃদ্ধি পেয়ে যখন i=101 হবে তখন  i<=n; কন্ডিশনটি মিথ্যা হবে এবং for লুপের কার্যক্রম শেষ হবে। for লুপের কার্যক্রম শেষ হওয়া মাত্রই printf(“The sum of numbers from 1 to %d is %d”, n, s); স্টেটমেন্ট কার্যকর হবে এবং The square sum of numbers from 1 to %d is %d লেখাটি প্রদর্শিত হবার কথা। কিন্তু আউটপুটে %d %d দেখা যাবে না। প্রথম %d এর পরিবর্তে n এর মান অর্থাৎ 100 এবং দ্বিতীয় %d এর পরিবর্তে s এর সর্বশেষ মান অর্থাৎ 338350 প্রদর্শিত হবে। আউটপুট দেখতে নিম্নরুপ হবে-

Enter any integer number:
100
The square sum of numbers from 1 to 100 is 338350

Leave a Reply

Your email address will not be published.