আসাসালামু আলাইকুম। আমি সানোয়ারুল ইসলাম। এই টিউটোরিয়ালে আমি জনপ্রিয় অনলাইন জাজ URI এর একটি বিখ্যাত এবং তুলনামূলক সহজ প্রব্লেম Time Conversion | 1019 এর এলগরিদম নিয়ে আলোচনা করব।
(১) প্রথমেই আমরা প্রব্লেম টা ভালো ভাবে পড়ে নেই। ইনপুট এবং আউটপুটে কি চাচ্ছে সেটা দেখি। অনলাইন জাজে প্রব্লেম সলভ করতে ইনপুট ও আউটপুটে কি চাচ্ছে সেটা ভালো ভাবে বোঝা প্রয়োজন। প্রয়োজনীয় ভেরিয়েবল ডিক্লেয়ার করে নিই । এখানে int ডাটা টাইপের year,month,day,input,reminder_1 ভেরিয়েবল গুলো ডিক্লায়ার করা হলো । অন্য নামেও করতে পারেন আপনারা ।
(২) scanf() ইউজ করে ইউজারের থেকে আমরা input নামের ভেরিয়েবলের মানটা নিবো ।
(৩) ইনপুটে ইউজারের দেয়া সংখ্যাটা ( input ) কে ৩৬৫ দিয়ে ভাগ করে যা পাবো সেটা year এর জন্য নির্ধারন করে দেব। আবার reminder_1 ভেরিয়েবলে ওই দিন সংখ্যাকে ৩৬৫ দিয়ে ভাগ করলে যেই ভাগশেষ থাকে সেটা বলে দেব। রিমাইন্ডার অপারেটর ( % ) ইউজ করে। যাকে (reminder_1) আবার ৩০ দিয়ে ভাগ করলে আমরা month পাবো। আবার, reminder_1 ভেরিয়েবল কে ৩০ দিয়ে ভাগ করলে যে ভাগ শেষ থাকবে তাই হবে day
(৪) printf() ইউজ করে আমরা যেভাবে আউটপুট টা চাওয়া হয়েছে , সেভাবে আউটপুটের জন্য কোড করব।
এক্ষেত্রে ফরম্যাট স্পেসিফায়ার , স্পেস , নিউ লাইন ইত্যাদি বিষয় খুবই গুরুত্ব সহকারে খেয়াল রাখতে হবে। যাতে যেভাবে চাওয়া হয়েছে , ঠিক সেভাবেই আউটপুট টা শো করে প্রোগ্রাম টা। বিশেষ করে নিউ লাইন '\n' প্রিন্টের কথা ভূলে যাওয়া চলবে না। নাহলে কিন্তু Presentation Error!! দেখাবে। যদিও সব কিছু ঠিকই আছে বলে মনে হবে ।
Final Code :
কোন ফিডব্যাক থাকলে কমেন্ট বক্সে জানাবেন। টিউটোরিয়াল টি দেখার জন্য ধন্যবাদ ।
(১) প্রথমেই আমরা প্রব্লেম টা ভালো ভাবে পড়ে নেই। ইনপুট এবং আউটপুটে কি চাচ্ছে সেটা দেখি। অনলাইন জাজে প্রব্লেম সলভ করতে ইনপুট ও আউটপুটে কি চাচ্ছে সেটা ভালো ভাবে বোঝা প্রয়োজন। প্রয়োজনীয় ভেরিয়েবল ডিক্লেয়ার করে নিই । এখানে int ডাটা টাইপের year,month,day,input,reminder_1 ভেরিয়েবল গুলো ডিক্লায়ার করা হলো । অন্য নামেও করতে পারেন আপনারা ।
(২) scanf() ইউজ করে ইউজারের থেকে আমরা input নামের ভেরিয়েবলের মানটা নিবো ।
(৩) ইনপুটে ইউজারের দেয়া সংখ্যাটা ( input ) কে ৩৬৫ দিয়ে ভাগ করে যা পাবো সেটা year এর জন্য নির্ধারন করে দেব। আবার reminder_1 ভেরিয়েবলে ওই দিন সংখ্যাকে ৩৬৫ দিয়ে ভাগ করলে যেই ভাগশেষ থাকে সেটা বলে দেব। রিমাইন্ডার অপারেটর ( % ) ইউজ করে। যাকে (reminder_1) আবার ৩০ দিয়ে ভাগ করলে আমরা month পাবো। আবার, reminder_1 ভেরিয়েবল কে ৩০ দিয়ে ভাগ করলে যে ভাগ শেষ থাকবে তাই হবে day
(৪) printf() ইউজ করে আমরা যেভাবে আউটপুট টা চাওয়া হয়েছে , সেভাবে আউটপুটের জন্য কোড করব।
এক্ষেত্রে ফরম্যাট স্পেসিফায়ার , স্পেস , নিউ লাইন ইত্যাদি বিষয় খুবই গুরুত্ব সহকারে খেয়াল রাখতে হবে। যাতে যেভাবে চাওয়া হয়েছে , ঠিক সেভাবেই আউটপুট টা শো করে প্রোগ্রাম টা। বিশেষ করে নিউ লাইন '\n' প্রিন্টের কথা ভূলে যাওয়া চলবে না। নাহলে কিন্তু Presentation Error!! দেখাবে। যদিও সব কিছু ঠিকই আছে বলে মনে হবে ।
Final Code :
#include<stdio.h> int main() { int input,day,month,year,reminder_1,rem2; scanf("%d",&input); year = input / 365; reminder_1= input % 365; month = reminder_1 / 30; day = reminder_1 % 30; printf("%d ano(s)\n",year); printf("%d mes(es)\n",month); printf("%d dia(s)\n",day); return 0; }
কোন ফিডব্যাক থাকলে কমেন্ট বক্সে জানাবেন। টিউটোরিয়াল টি দেখার জন্য ধন্যবাদ ।
thanks..nice
ReplyDelete