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
10+20+30—– +n এর সাহায্যে c প্রগ্রাম লিখ আর c-প্রগ্রাম for loop এবং do while এর মাধ্যমে করতে হবে
10+20+30—– +n এর সাহায্যে c প্রগ্রাম লিখ আর c-প্রগ্রাম for loop এবং do while এর মাধ্যমে করতে হবে
Reply