কম্পিউটার টিউটোরিয়াল

C++ এ একটি রেস্তোরাঁয় খাবারের অর্ডারের টেবিল প্রদর্শন করুন


ধরুন আমাদের কাছে একটি অ্যারে অর্ডার রয়েছে, যা গ্রাহকরা একটি রেস্তোরাঁয় করা অর্ডারগুলিকে প্রতিনিধিত্ব করে৷ সুতরাং, অর্ডারগুলি[i]=[cust_namei, table_numi, food_itemi] যেখানে কাস্ট_নামি হল গ্রাহকের নাম, টেবিল_নুমি হল গ্রাহকদের টেবিল নম্বর এবং food_itemi হল গ্রাহকের অর্ডারগুলি।

আমাদের রেস্টুরেন্টের “ডিসপ্লে টেবিল” ফেরত দিতে হবে। এখানে "ডিসপ্লে টেবিল" হল একটি টেবিল যার সারি এন্ট্রিগুলি নির্দেশ করে যে প্রতিটি টেবিলের কতগুলি খাবারের অর্ডার দেওয়া হয়েছে। প্রথম কলামটি হবে টেবিল নম্বর এবং বাকি কলামগুলি বর্ণানুক্রমিক ক্রমে প্রতিটি খাবারের সাথে মিলে যাবে। প্রথম সারিটি একটি শিরোনাম হওয়া উচিত যার প্রথম কলামটি "টেবিল", তারপরে খাবারের নাম।

সুতরাং, যদি ইনপুট অর্ডারের মত হয় =[["আমল","3","পরাঠা"],["বিমল","10","বিরিনি"],["আমল","3","ফ্রাইড চিকেন "],["রক্তিম","5","জল"],["রক্তিম","5","পরাথা"],["দীপক","3","পারথা"]], তাহলে আউটপুট হবে হতে [["টেবিল","বিরিনি","ফ্রাইড চিকেন","পরাঠা","জল"],["3","0","1","2","0"],["5 ","0","0","1","1"],["10","1","0","0","0"]]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি মানচিত্র m

    সংজ্ঞায়িত করুন
  • একটি সেট নাম সংজ্ঞায়িত করুন

  • একটি সেট সংজ্ঞায়িত করুন t

  • প্রতিটি উপাদানের জন্য এটি ক্রম তালিকায়

    • এটিকে [1] t

      -এ ঢোকান
    • ঠিক আছে :=সত্য

    • যদি ok মিথ্যা হয়, তাহলে -

      • v =একটি অ্যারে বিভক্ত করার পরে এটি[2] ফাঁকা স্থান ব্যবহার করে

      • প্রতিটি উপাদান x এর জন্য v, করুন

        • (m[it[1], x] 1 দ্বারা বাড়ান)

        • নামের মধ্যে x ঢোকান

    • অন্যথায়

      • (m[it[1], it[2]] 1 দ্বারা বাড়ান)

      • এটিকে [2] নামের মধ্যে সন্নিবেশ করান

  • একটি 2D অ্যারে ret সংজ্ঞায়িত করুন

  • একটি অ্যারের তাপমাত্রা সংজ্ঞায়িত করুন এবং নাম থেকে উপাদান অনুলিপি করুন

  • টেম্পের মধ্যে প্রথম উপাদান হিসাবে "টেবিল" সন্নিবেশ করুন

  • ret-এর শেষে temp সন্নিবেশ করুন

  • প্রতিটি উপাদানের জন্য এটি t, করুন

    • একটি অ্যারে te সংজ্ঞায়িত করুন

    • te

      এর শেষে ঢোকান
    • প্রতিটি উপাদান x নামের জন্য, করুন

      • te

        এর শেষে স্ট্রিং হিসাবে m[it, x] সন্নিবেশ করান
    • ret এর শেষে te ঢোকান

  • অ্যারে ret সাজান

  • রিটার্ন রিটার্ন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<vector<string> > v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << "[";
      for(int j = 0; j <v[i].size(); j++){
         cout << v[i][j] << ", ";
      }
      cout << "],";
   }
   cout << "]"<<endl;
}
typedef long long int lli;
class Solution {
public:
   vector <string> split(string& s, char delimiter){
      vector <string> tokens;
      string token;
      istringstream tokenStream(s);
      while(getline(tokenStream, token, delimiter)){
         tokens.push_back(token);
      }
      return tokens;
   }
   static bool cmp(vector <string>& a, vector <string>& b){
      lli an = stol(a[0]);
      lli bn = stol(b[0]);
      return an < bn;
   }
   vector<vector<string>> displayTable(vector<vector<string>>& o) {
      map <string, map < string, int> >m;
      set <string> names;
      set <string> t;
      for(auto &it : o){
         t.insert(it[1]);
         bool ok = true;
         if(!ok){
            vector <string> v = split(it[2], ' ');
            for(auto& x : v){
               m[it[1]][x]++;
               names.insert(x);
            }
         }
         else{
            m[it[1]][it[2]]++;
            names.insert(it[2]);
         }
      }
      vector < vector <string> > ret;
      vector <string> temp(names.begin(), names.end());
      temp.insert(temp.begin(), "Table");
      ret.push_back(temp);
      for(auto& it : t){
         vector <string> te;
         te.push_back(it);
         for(auto& x : names){
            te.push_back(to_string(m[it][x]));
         }
         ret.push_back(te);
      }
      sort(ret.begin() + 1, ret.end(), cmp);
      return ret;
   }
};
main(){
   Solution ob;
   vector<vector<string>> v = {{"Amal","3","Paratha"},{"Bimal","10","Biryni"},{"Amal","3","Fried
Chicken"},{"Raktim","5","Water"},{"Raktim","5","Paratha"},{"Deepak"," 3","Paratha"}};
   print_vector(ob.displayTable(v));
}

ইনপুট

{{"Amal","3","Paratha"},{"Bimal","10","Biryni"},{"Amal","3","Fried Chicken"},{"Raktim","5","Water"},{"Raktim","5","Paratha"},{"Deepak"," 3","Paratha"}}

আউটপুট

[[Table, Biryni, Fried Chicken, Paratha, Water, ],[3, 0, 1, 2, 0, ],[5, 0, 0, 1, 1, ],[10, 1, 0, 0, 0, ],]

  1. C++ এ () এ স্ট্রিং

  2. C++ এ একটি ভেক্টর বাছাই করা

  3. C++ এ একটি স্ট্রিং টোকেনাইজ করা

  4. C++ এ একটি স্ট্রিংকে টোকেনাইজ করবেন?