ট্র্যাক
/
C#
C#
/
অনুশীলনী
/
হাইপেরিয়ায় অতিমুদ্রাস্ফীতির আঘাত
হাইপেরিয়ায় অতিমুদ্রাস্ফীতির আঘাত

হাইপেরিয়ায় অতিমুদ্রাস্ফীতির আঘাত

লার্নিং অনুশীলনী

ভূমিকা

ওভারফ্লো

কোনো গাণিতিক অপারেশন বা টাইপ কনভার্সনের মতো গণনার ফল যদি গ্রহণকারী টাইপের ধারণক্ষমতার চেয়ে বড় একটি মান হয়, তখন পাটিগণিতিক ওভারফ্লো ঘটে।

এমন পরিস্থিতিতে int ও long এবং তাদের unsigned প্রতিরূপের এক্সপ্রেশনগুলো নীরবে ঘুরে যায়।

checked কিওয়ার্ড ব্যবহার করে ইন্টিজার গণনার আচরণ পরিবর্তন করা যায়। checked ব্লকের ভেতরে ওভারফ্লো ঘটলে OverflowException-এর একটি ইনস্ট্যান্স থ্রো করা হয়।

int one = 1;
checked
{
    int expr = int.MaxValue + one;   // OverflowException is thrown
}

// or

int expr2 = checked(int.MaxValue + one);     // OverflowException is thrown

float ও double টাইপের এক্সপ্রেশন ইনফিনিটি নামের একটি বিশেষ মান গ্রহণ করে।

decimal টাইপের এক্সপ্রেশন OverflowException-এর একটি ইনস্ট্যান্স থ্রো করে।

নির্দেশনা

হাইপেরিয়া দেশটির নানা সমস্যা আছে। বিশেষ করে, মুদ্রাস্ফীতি এখন পুরোপুরি নিয়ন্ত্রণের বাইরে। কেন্দ্রীয় ব্যাংকে একটি চুক্তিতে যোগ দিতে আপনাকে বিমানে করে এখানে আনা হয়েছে।

1. ব্যাংক নোটের মূল্যমান প্রিন্ট করুন

অভ্যন্তরীণ প্রশাসন সহজ করতে কেন্দ্রীয় ব্যাংক প্রতিটি মূল্যমানকে কয়েকটি ভাগে ভাগ করেছে: একটি বেস, যা তুলনামূলকভাবে অপরিবর্তিত থাকে, আর একটি মাল্টিপ্লায়ার (সব মূল্যমানের জন্য একই), যা বছর বছর, সপ্তাহ সপ্তাহ, এমনকি দিন দিন বদলানো যায়।

ছাপার সময় ব্যাংক নোটের মূল্যমান হয় বেস ও মাল্টিপ্লায়ারের গুণফল।

এই ব্যবস্থা চালু হওয়ার সময়ই ক্ষুদ্রতম ব্যাংক নোটের মূল্যমান ছিল 10,000,000। নিচের টেবিলে ব্যবস্থাটি প্রথম চালু হওয়ার সময়ের অবস্থা দেখানো হয়েছে (প্রথম ৩টি মূল্যমানের জন্য)। তারপর থেকে পরিস্থিতি আরও অনেক খারাপ হয়েছে, আর এখন শুধু মাল্টিপ্লায়ারই বদলায় না, বেসও বদলায়।

Base Multiplier Denomination
10,000 1,000 10,000,000
50,000 1,000 50,000,000
100,000 1,000 100,000,000
... 1,000 ...

সংক্ষেপে, এর মানে হলো মূল্যমান = বেস * মাল্টিপ্লায়ার।

অনুগ্রহ করে CentralBank.DisplayDenomination() মেথডটি ইমপ্লিমেন্ট করুন, যা বেস ও মাল্টিপ্লায়ার নেয় এবং তাদের গুণফল (base * multiplier) একটি স্ট্রিং হিসেবে রিটার্ন করে। রিটার্ন করা সংখ্যাসূচক স্ট্রিংটি ফরম্যাট করা উচিত নয়।

গুণ করার সময় ওভারফ্লো হলে "*** Too Big ***" স্ট্রিংটি রিটার্ন করতে হবে।

CentralBank.DisplayDenomination(10000L, 1000L);
// => "10000000"
CentralBank.DisplayDenomination(long.MaxValue / 2, 10000L);
// => "*** Too Big ***"

2. হাইপেরিয়ার GDP প্রদর্শন করুন

কেন্দ্রীয় ব্যাংক অভ্যন্তরীণভাবে GDP রেকর্ড করতেও একই মাল্টিপ্লায়ার পদ্ধতি ব্যবহার করে। পরিসংখ্যান একটি বেস মূল্যমানে রেকর্ড করা হয়, তারপর মাল্টিপ্লায়ার দিয়ে বড় করা হয়।

অনুগ্রহ করে CentralBank.DisplayGDP() মেথডটি ইমপ্লিমেন্ট করুন, যা বেস GDP ও বর্তমান মাল্টিপ্লায়ার নেয় এবং GDP একটি স্ট্রিং হিসেবে রিটার্ন করে।

GDP হিসাব করা না গেলে "*** Too Big ***" রিটার্ন করা হয়।

CentralBank.DisplayGDP(555f, 10000f);
// => "5550000"
CentralBank.DisplayGDP(float.MaxValue / 2, 10000f);
// => "*** Too Big ***"

3. প্রধান অর্থনীতিবিদের বেতন প্রদর্শন করুন

ব্যাংকে আপনার বস নিশ্চিত হতে চান যেন বেতন দেওয়ার সময় কোনো সমস্যা না হয়।

CentralBank.DisplayChiefEconomistSalary() মেথডটি ইমপ্লিমেন্ট করুন, যা বেস এককে প্রকাশ করা একটি বেতন (উপরের মতো) ও একটি মাল্টিপ্লায়ার নেয় এবং গুণফল সম্বলিত একটি স্ট্রিং রিটার্ন করে।

বেতন হিসাব করা না গেলে "*** Much Too Big ***" রিটার্ন করা হয়।

CentralBank.DisplayChiefEconomistSalary(555000m, 10000m);
// => "5550000000"
CentralBank.DisplayChiefEconomistSalary(555000m, decimal.MaxValue / 2L);
// => "*** Much Too Big ***"
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
C# Exercism

হাইপেরিয়ায় অতিমুদ্রাস্ফীতির আঘাত শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, C# ট্র্যাকের 62টি কনসেপ্ট178টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।