robot_digkult_ksz_202205C++.cpp

 1  #include <iostream>
 2  #include <vector>
 3  #include <map>
 4  #include <iomanip>
 5  
 6  using namespace std;
 7  
 8  int main()
 9  {
10      setlocale(LC_ALL,"");
11      /* feladat megoldáshoz használt változók */
12      string p,f,v,r;
13      map<char, int> betuk;
14      int ED,KN;
15  
16      cout << "Kérem a robot parancsait (pl. EEEKDKEKDKEKDDNN): ";
17      cin >> p;
18      betuk['E'] = 0; betuk['D'] = 0; betuk['K'] = 0; betuk['N'] = 0;
19  
20      for (auto& c : p)   /* a karakterek (c) a parancsbĂłl (p) a kulcsok --> betuk['E'] pl. */
21      {
22          betuk[c]++;
23      }
24  
25      for (auto elem:betuk)
26      {
27          cout << elem.first << ": " << elem.second << endl;
28      }
29  
30      ED=abs(betuk['E']-betuk['D']);
31      KN=abs(betuk['K']-betuk['N']);
32      f,v="";
33      if(betuk['E']>betuk['D'])
34      {
35          for(auto i=0;i<ED;i++) f+='E';
36      }
37      else
38      {
39          for(auto i=0;i<ED;i++) f+='D';
40      }
41      if(betuk['K']>betuk['N'])
42      {
43          for(auto i=0;i<KN;i++) v+='K';
44      }
45      else
46      {
47          for(auto i=0;i<KN;i++) v+='N';
48      }
49      r=f+v;
50      cout << "Egy legrövidebb út parancsszava: " << r << endl;
51  
52      cout << "Csak kiírás, változó nélkül:" << endl;
53      //Ha későbbi célokra nem kell ez a rövid parancs, akkor így is mehetett volna a kiírás:
54      cout.width(ED);
55      betuk['E']>betuk['D'] ? cout.fill('E'):cout.fill('D');
56      cout << "";
57      cout.width(KN);
58      betuk['K']>betuk['N'] ? cout.fill('K'):cout.fill('N');
59      cout << "" << endl;
60  
61      return 0;
62  }