ট্র্যাক
/
C++
C++
/
অনুশীলনী
/
যানবাহন কেনা
যানবাহন কেনা

যানবাহন কেনা

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

ভূমিকা

তুলনা

C++-এ আপনি তুলনা অপারেটর ব্যবহার করে মান তুলনা করতে পারেন।

তুলনা অপারেটর
সমান ==
সমান নয় !=
কম <
কম বা সমান <=
বেশি >
বেশি বা সমান >=

এই তুলনাগুলোর ফলাফল সবসময় একটি বুলিয়ান মান:

int a{3};

bool eq1 = a != 4; // true

bool eq2 = a > 5;  // false

== এবং != অপারেটর দুটি যথাক্রমে একটি মান অন্য একটি মানের সমান কি না তা যাচাই করে। এখানে কিছু কমন উদাহরণ রয়েছে:

bool eq3 = 2 == 3; // false, integer comparison

bool eq4 = 2.1 != 2.2; // true, float comparison

bool eq5 = "hello" == "hello"; // true, string comparison

অন্য অপারেটরগুলো যাচাই করে একটি মান অন্য একটি মানের চেয়ে বড় (>), বড় বা সমান (>=), ছোট (<), এবং ছোট বা সমান (<=) কি না। এই ধরনের তুলনা সংখ্যা এবং স্ট্রিংয়ের জন্য উপলব্ধ। স্ট্রিং তুলনা করার সময় অভিধানিক ক্রম (যা লেক্সিকোগ্রাফিক ক্রম নামেও পরিচিত) অনুসরণ করা হয়।

bool eq6 = 2 > 3; // false, integer comparison

bool eq7 = 1.2 < 1.3; // true, float comparison

bool eq8 = "Hello" < "World"; // true, string comparison

If স্টেটমেন্ট

C++-এ কন্ডিশনালগুলো অন্য ভাষার কন্ডিশনালের মতোই। যেকোনো কন্ডিশনাল অপারেশনের অন্তর্নিহিত টাইপ হলো bool টাইপ, যার মান true বা false হতে পারে। কন্ডিশনালগুলো প্রায়ই বিভিন্ন শর্ত পরীক্ষা করার জন্য ফ্লো কন্ট্রোলের মাধ্যম হিসেবে ব্যবহৃত হয়।

একটি if স্টেটমেন্ট ব্যবহার করা যায়, যা অন্তর্নিহিত শর্তটি true হলে তার কোড চালায়, এভাবে:

std::string value{"val"};

if (value == "val") {
    return "was val";
}

একাধিক কেস জড়িত পরিস্থিতিতে অনেক if স্টেটমেন্ট else if এবং else স্টেটমেন্ট ব্যবহার করে একসাথে চেইন করা যায়।

int number{33};

if (number > 0) {
   return "positive";
} else if (number < 0) {
    return "negative";
} else {
   return "zero";
}

C++17 থেকে if স্টেটমেন্টে একটি ছোট ইনিশিয়ালাইজেশন স্টেটমেন্টও অন্তর্ভুক্ত করা যায়, যা if স্টেটমেন্টের জন্য এক বা একাধিক ভ্যারিয়েবল ইনিশিয়ালাইজ করতে ব্যবহার করা যায়। উদাহরণস্বরূপ:

int num{7};
if (int v{2 * num}; v > 10) {
    return v;
} else {
    return num;
}
// => 14

দ্রষ্টব্য: ইনিশিয়ালাইজেশনে তৈরি করা কোনো ভ্যারিয়েবল if স্টেটমেন্টের শেষের পরে অ্যাক্সেস করা যায় না।

নির্দেশনা

এই অনুশীলনীতে আপনি একটি যানবাহন কেনার প্রস্তুতি নিতে সাহায্য করার জন্য কিছু কোড লিখবেন।

আপনার সামনে তিনটি কাজ আছে: একটি হলো আপনার লাইসেন্সের প্রয়োজন হবে কি না তা নির্ধারণ করা, একটি হলো দুটি যানবাহনের মধ্যে একটি বেছে নিতে সাহায্য করা, আর একটি হলো ব্যবহৃত যানবাহনের গ্রহণযোগ্য দাম অনুমান করা।

1. আপনার ড্রাইভারের লাইসেন্সের প্রয়োজন হবে কি না তা নির্ধারণ করুন

কিছু ধরনের যানবাহন চালাতে ড্রাইভারের লাইসেন্স লাগে। ধরে নিন যে কেবল "car" এবং "truck" ধরনের যানবাহনের জন্য লাইসেন্স লাগে, বাকি সবকিছু লাইসেন্স ছাড়াই চালানো যায়।

needs_license(kind) ফাংশনটি লিখুন, যা ইনপুট হিসেবে যানবাহনের ধরন একটি স্ট্রিং হিসেবে নেয় এবং সেই ধরনের যানবাহনের জন্য আপনার লাইসেন্স লাগবে কি না তা বোঝানো একটি বুলিয়ান রিটার্ন করে।

needs_license("car")
// => true

needs_license("bike")
// => false

needs_license("truck")
// => true

2. কেনার জন্য সম্ভাব্য দুটি যানবাহনের মধ্যে একটি বেছে নিন

আপনি হাতে থাকা যানবাহনগুলোর মধ্যে থেকে আপনার বিকল্পগুলো মূল্যায়ন করেন। আপনি সেগুলো দুটি বিকল্পে নামিয়ে আনতে পেরেছেন, কিন্তু চূড়ান্ত সিদ্ধান্ত নিতে আপনার সাহায্যের প্রয়োজন। সেজন্য choose_vehicle(option1, option2) ফাংশনটি লিখুন, যা আর্গুমেন্ট হিসেবে দুটি যানবাহন নেয় এবং লেক্সিকোগ্রাফিক্যাল ক্রমে যেটি আগে আসে সেই বিকল্পটি সম্বলিত একটি সিদ্ধান্ত রিটার্ন করে।

choose_vehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."

choose_vehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."

রিটার্ন করা স্ট্রিংটি "<CHOSEN_VEHICLE> is clearly the better choice." প্যাটার্নটি অনুসরণ করা উচিত, যেখানে <CHOSEN_VEHICLE> হলো পাস করা আর্গুমেন্টগুলোর মধ্যে থেকে বেছে নেওয়া বিকল্পটি।

3. ব্যবহৃত যানবাহনের দামের একটি আনুমানিক হিসাব বের করুন

এখন আপনি সিদ্ধান্ত নিয়ে ফেলেছেন, তাই ডিলারশিপে আপনি ন্যায্য দাম পাচ্ছেন কি না তা নিশ্চিত করতে চান। যেহেতু আপনি একটি ব্যবহৃত যানবাহন কিনতে আগ্রহী, তাই দাম নির্ভর করে যানবাহনটির বয়সের উপর। মোটামুটি একটি অনুমানের জন্য ধরে নিন, যানবাহনের বয়স যদি ৩ বছরের কম হয়, তবে এর দাম হয় একেবারে নতুন অবস্থায় থাকা মূল দামের ৮০%। আর যদি বয়স কমপক্ষে ১০ বছর হয়, তবে দাম ৫০%। আর যদি যানবাহনের বয়স কমপক্ষে ৩ বছর কিন্তু ১০ বছরের কম হয়, তবে দাম মূল দামের ৭০%।

calculate_resell_price(original_price, age) ফাংশনটি লিখুন, যা if, else if এবং else ব্যবহার করে এই যুক্তিটি প্রয়োগ করে (চর্চা করতে চাইলে অন্য উপায়ও আছে)। এটি আর্গুমেন্ট হিসেবে মূল দাম এবং যানবাহনের বয়স নেয় এবং ডিলারশিপে আনুমানিক দামটি রিটার্ন করে।

calculate_resell_price(1000, 1)
// => 800

calculate_resell_price(1000, 5)
// => 700

calculate_resell_price(1000.0, 15)
// => 500

নোট: রিটার্ন ভ্যালুটি double টাইপের।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
C++ Exercism

যানবাহন কেনা শুরু করতে প্রস্তুত?

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