কম্পিউটার

C++ এ দৈনিক তাপমাত্রা


ধরুন আমাদের কাছে ইতিবাচক তাপমাত্রার একটি অ্যারে রয়েছে যা T তাপমাত্রাকে প্রতিনিধিত্ব করে। কাজটি হল প্রদত্ত তালিকায় পরবর্তী উষ্ণ তাপমাত্রার জন্য কত দিন আছে তা গণনা করা।

উদাহরণস্বরূপ

ইনপুট-1: T =[ 73, 74, 75, 71, 69, 72, 76, 73]

আউটপুট: [1, 1, 4, 2, 1 ,1 ,0 ,0]

ব্যাখ্যা: তাপমাত্রার প্রদত্ত তালিকায় [73, 74, 75, 71, 69, 72, 76, 73], পরবর্তী বৃহত্তর তাপমাত্রাটি 1 দিনে। একইভাবে, 6 তম দিনটি সমস্ত তাপমাত্রার মধ্যে সবচেয়ে উষ্ণ, এইভাবে আউটপুট হবে [ 1, 1, 4, 2, 1, 1, 0, 0]।

এই সমস্যা সমাধানের পদ্ধতি

আমাদের কাছে তাপমাত্রার একটি তালিকা রয়েছে এবং আমাদের প্রদত্ত তাপমাত্রা থেকে পরবর্তী উষ্ণ দিন পর্যন্ত দিনের সংখ্যা গণনা করতে হবে৷

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

আমরা আবার পরীক্ষা করব যে স্ট্যাকের উপরের অংশে তাপমাত্রা বেশি বা উষ্ণ আছে, তারপর দিনগুলি থেকে দিনগুলি বিয়োগ করে দিন গণনা করুন এবং ফলাফলে সূচকটি সংরক্ষণ করুন৷

  • তাপমাত্রার ডেটা ইনপুট নিন।
  • একটি পূর্ণসংখ্যা ফাংশন দৈনিকTemperature(int *T) তাপমাত্রার অ্যারেকে ইনপুট হিসাবে নেয় এবং পরবর্তী উষ্ণতম তাপমাত্রার তালিকা প্রদান করে।
  • তাপমাত্রা অ্যারের উপর পুনরাবৃত্তি করুন।
  • সমস্ত তাপমাত্রার তালিকা ফেরাতে একটি ফলাফল ভেক্টর বা অ্যারে তৈরি করুন।
  • একটি খালি স্ট্যাক তৈরি করুন এবং top()>T[i] কিনা তা পরীক্ষা করার সময় তাপমাত্রা চাপুন, তারপরে এটিকে স্ট্যাকের মধ্যে ঠেলে দিন এবং দিন গণনা করুন।
  • ফলাফল সংরক্ষণ করুন এবং ফেরত দিন।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
void dailyTemp(int * T, int n) {
   stack < int > s;
   int ans[n];
   memset(ans, 0, sizeof(ans));
   for (int i = 0; i < n; i++) {
      while (!s.empty() && T[s.top()] < T[i]) {
         int j = s.top();
         s.pop();
         ans[j] = i - j;
      }
      s.push(i);
   }
   for (int i = 0; i < n; i++) {
      cout << ans[i] << " " << ;
   }
}
int main() {
   int n = 8;
   int T[8] = {73, 74, 75, 71, 69, 72, 76, 73};
   dailyTemp(T, n);
   return 0;
}

আউটপুট

উপরের কোডটি চালানোর ফলে আউটপুট তৈরি হবে,

1 1 4 2 1 1 0 0

প্রদত্ত তাপমাত্রার পরবর্তী উষ্ণ তাপমাত্রা দিন 4 এ।


  1. C++ এ ডায়াগোনাল ট্রাভার্স II

  2. C++ এ কিল প্রসেস

  3. C++ এ কাঠবিড়ালি সিমুলেশন

  4. C++ এ আয়তক্ষেত্র ক্ষেত্র II