একটি সিম্পল C প্রোগাম হেল্প দরকার (WHILE LOOP)

একটি সিম্পল C প্রোগাম হেল্প দরকার
আমি মোটামুটি নিজে নিজে এফ,এলচ,সুইচ পরজন্তো শিখেছি । লুপ এশে আটকে গেছি তায় হেল্প লাগবে আপনাদের কাছ থেকে। আশা করি আমার কন্সেপট ক্লিয়ার করে দিবেন ।

নিচের প্রোগাম তির কন্সেপট ভালো ভাবে বুজলাম না

 

#include<stdio.h>
int main(){
int a,b,c;
printf("Enter Two positive integer :");
scanf("%d %d",&a,&b);
while(b!=0)
{
c=a%b;
a=b;
b=c;
}
printf("%d",a);
return 0;}

 

এই প্রোগামটি গসাগু নিরনয় করতে ব্যাবহার করা হয় ।
এখানে প্রশ্ন
১। while(b!=0) এখানে কন্ডিশন হিসাবে কেন b!=0 ব্যাবহার করা হল? a!=0 দিলে Floating point exception
প্রোগামটি কাজ করে না ।
২।আমি জখন % ব্যাবহার শিখি তখন বড় মান থেকে ছোট মান ভাগ করে ভাগশেষ বের করার জন্ন্য % এইটি ব্যাবহার করা হত। কিন্তু এখানে a%b ব্যাবহার করা হচ্ছে । a এর মান b এর থেকে বড় কিনবা ছোট ফ্যাক্ট না। b%a ব্যাবহার করা হলে প্রোগাম কাজ করে না ঠিক ভাবে ।
৩।a=b;
b=c; এই এসাইন করা বুজলাম না ঠিক মত এটির উপর ভালকরে আমার কন্সেপট ক্লিয়ার দরকার । ৩ নং টপিক নিয়ে একতু বেসি করে বলিবেন জাতে আর কখুন সমস্যা না হয় ।
৪।printf("%d",a); কেন a ভারিএবল ব্যাবহার করা হল

আশা করি আমার বড়ভাই গন তার ছোট এই ভায়টিকে হ্লেপ করবেন ।

 

[লিনাক্ম থেকে বাংলা লেখতে অনেক সমস্য ]
Thanks All

Level 0

আমি Raihan। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 11 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 8 টি টিউন ও 92 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

i'm raihan


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

আপনি b!=0 use করতে না চাইলে কোডিং এভাবে করুন —
#include
int main(){
int a,b,c;
printf(“Enter Two positive integer :”);
scanf(“%d %d”,&a,&b);
while(a!=0)
{
c=b%a;
b=a;
a=c;
}
printf(“%d”,b);
return 0;}

গ.সা.গু. নির্ণয় এর নিয়ম অনুসারে — ভাগশেষ ০ হওয়ার আগ পর্যন্ত ভাগশেষ দিয়ে ভাজক কে পুনরায় ভাগ করা হয় , তাই b=c করা হয়েছে ।

একটু চিন্তা করলেই বুঝতে পারবেন আশা করি । ধন্যবাদ ।

b!=0 হয়েছে কারণ কোন কিছুকে 0 দ্বারা ভাগ করলে ভাগফল অসঙ্গায়িত আসে, b=0 দিলে while loop কাজই করবে না এক্ষেত্রে।
৩ নং এ যা জানতে চেয়েছেন, a=b দ্বারা b এর যে ভ্যালুটা আপনি scanf() দিয়ে নিলেন ওইটা a তে assign করা হল…… b=c দ্বারা c=a%b এর যে ভেলু পাবেন ওইটা b তে assign হবে বুঝাচ্ছে।

প্রোগ্রামটা আরও সহজভাবে করা যায়, int main() ব্যাবহার না করে void main() ও দিতে পারতেন, সেক্ষেত্রে আর return 0; দিতে হবে না……

ভাই প্রথমেই বলছি ভুল হলে মাফ করবেন কারন আমি নিজেও কেবল লুপ শিখছি… (শিখা চলছে এখনো 🙂 )

প্রথম দুইটার উত্তর আমি দিতে পারব না তবে ৩ নং টা আমি নিজে যত খানি বুঝেছি ব্যখ্যা করছি…

এখানে আমরা প্রথমে while() ফাংশনে কন্ডিশন দিয়েছিলাম b!=0 অর্থাৎ কিনা এই ফাংশন কাজ করবে b =0 হয়ার আগ পর্যন্ত ।
এখন আমরা জানি গসাগু নির্নয়ের সময় ভাজ্যকে ভাজক দিয়ে ভাগ করে … ভাগশেষ দিয়ে ভাজক কে ভাগ করতে হয় এভাবে ভাগশেষ শুন্য পর্যন্ত যেতে হয়।
তো আমাদের প্রোগ্রামকে সেটাই বলে দেয়া হয়েছে যে প্রথমে তুমি a কে b দিয়ে ভাগ করবে সেটা হল ভাগশেষ c ।
আমাদের প্রথম ভাগ করা শেষ এখন আমাদের ভাজ্য(b) = ভাজক(a), এবং নতুন ভাজক ()= আগের ভাগশেষ (c)
আশা করি বুঝেছেন 🙂
রিপ্লাই দেবেন আশা করি…

Level 0

আমি ব্যবহার করি। __gcd(a,b) 😀