কোন নাম্বার এর ডিজিট সংখ্যা বের করার লজিক কি হবে?

asked 03 Aug '16, 17:24

Masumbillal's gravatar image

Masumbillal
111


নাম্বারটা স্ট্রিংয়ে রাখেন। এরপর লুপের মাধ্যমে লেন্থ/ ডিজিট সংখ্যা বের করেন। আর নাম্বার যদি বেশী বড় না হয়, if-else ইউজ করতে পারেন।

যেমনঃ যদি ১০ এর ছোট হয় ডিজিট সংখ্যা হবে ১। যদি ১০০ এর ছোট হয় ডিজিট সংখ্যা হবে ২, যদি ১০০০ এর ছোট হয় ডিজিট সংখ্যা হবে ৩। তবে এক্ষেত্রে অবশ্যই else if ইউজ করতে হবে।

permanent link

answered 03 Aug '16, 17:42

_Shaon_'s gravatar image

_Shaon_
796217

edited 03 Aug '16, 17:48

আপনার ইনপুট যদি n = 123 হয় এটাকে ১০ দিয়ে ভাগ করতে থাকেন যতক্ষণ না n এর মান শূন্য না হয় । n এর মান শূন্য না হওয়া পর্যন্ত যতবার ভাগ করা যায় সেটা count করেন । শেষে count প্রিন্ট করেন ।

n = 123 জন্য হিসাব করে দেখি কি হয় ।

 1. n = n / 10 করলে n = 12; count = 1;
 2. n = n / 10 করলে n = 1;  count = 2;
 3. n = n / 10 করলে n = 0;  count = 3;
 4. n = 0 লুপ থেকে বের হয়ে আসেন । 
 এখন count এর মান প্রিন্ট করেন ।

ধন্যবাদ :)

permanent link

answered 03 Aug '16, 18:29

menon's gravatar image

menon
4.5k330

আপনার উচিত আপনি কী চান তা একটি উদাহরণসহ বলা। 12233 এই সংখ্যাতে ডিজিট সংখ্যা ৫ টি কিন্তু ভিন্ন ভিন্ন ডিজিট সংখ্যা ৩ টি (1, 2, 3)।

১) আপনি যদি সাধারণ লুপ প্র্যাকটিসের জন্য এই প্রশ্ন করে থাকেন তবে এভাবে করবেন

while(n != 0) 
{
    n = n/10;
    i++    // i will be initialized as 0
}

এটি খুবই বেসিক একটি বিষয় বলে এভাবে দিয়ে দিয়েছি। তবে আপনাকে আরেকটি কাজ দিলাম - একটি সংখ্যার ডিজিটগুলোর যোগফল বের করুন। যেমনঃ ১২৩৭৮ এর জন্য ২১। হিন্ট: % (Modulo Operator) - যা ভাগশেষ রিটার্ন করে। 12 % 7 = 5 .

২) আপনাকে যদি বলা হয় একটি সংখ্যা দেওয়া হবে, তাতে ডিজিট সংখ্যা কয়টি তা বের করতে হবে তবে কিভাবে করবেন তা বলছি। দেখুন, ৫ -এ ডিজিট সংখ্যা ১ টি, ১৫৬৪৭ -এ ৫ টি। আবার ০০১২০ = ১২০ বলে তাতে ৩ টি। আবার ০০০০০ = ০ বলে তাতে ১ টি।

এখন আমরা এই সব কিছু বিবেচনা করে একটি সমাধানে আসব।

আমরা একটি স্ট্রিং নেব, ধরি s[200]। আরেকটি int ভ্যারিয়েবল নেব, ধরি f = 0। এর শুরু থেকে চেক করে এগিয়ে যাব। যেহেতু আমরা ০০১২৬ বা ০০০০০ এর মত প্রতিকুল কিছু ফিগারের মুখোমুখি হতে পারি তাই চেক করব সর্বপ্রথম কোন ক্যারেকটারটি '0' না। যখনই কোনো ক্যারেকটার পাব যা '0' নয়, তখনই f = 1 করে দেব এবং ঐ অবস্থান থেকে স্ট্রিংয়ের বাকি অংশের দৈর্ঘ্য নিয়ে প্রিন্ট করব। লুপের বাইরে এসে চেক করব f = 1 নাকি 0, 1 হলে বের করা দৈর্ঘ্য প্রিন্ট করব, নাহলে ডিজিট সংখ্যা হিসেবে 1 প্রিন্ট করব।

৩) যদি আমাদের বলে কয়টি ভিন্ন ভিন্ন ডিজিট, তাহলে আগের মত যেখান থেকে অশূন্য ক্যারেকটার শুরু সেখান থেকে গণনা করা শুরু করব। তার আগে আমরা একটি অ্যারে a[10] নিয়ে তার সব উপাদান 0 করে দেব। ঐ স্থান থেকে স্ট্রিং চেক করার সময় যখনই কোনো ক্যারেকটার পাবো তখনই a[10] অ্যারের তততম ইনডেক্সের মান 1 করে দেব (এই কাজটি নিজে করতে না পারলে সাহায্য নিতে পারেন)। সব শেষে অ্যারে a -তে কয়টি 1 আছে তার সংখ্যা প্রিন্ট করব।

ধন্যবাদ।

permanent link

answered 03 Aug '16, 20:38

Najat's gravatar image

Najat
5398

edited 03 Aug '16, 20:44

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×209
×123
×25
×9
×5

question asked: 03 Aug '16, 17:24

question was seen: 699 times

last updated: 03 Aug '16, 20:44