Egy gondolkodtató gyakorló feladatokból álló gyűjtemény. Főbb témák a nyelvspecifikus programozás és a matematika.
A Malulukai Nemzethy Börtönben (MNB) néha a rabokat új cellákba kell átköltöztetni. A börtön informatikusai által készített nyilvántartórendszer egy leegyszerűsített részletét látja. Fejtse meg, mi lesz a szabványos kimenetre írt szöveg?
// c++17
#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
struct Rab
{
const std::string azonosito;
std::string nev;
Rab(std::string azon, std::string nev): azonosito{azon}, nev{nev}
{
std::cout << "Rab [CTOR]\n";
}
Rab(Rab const& masik):
azonosito{masik.azonosito}, nev{masik.nev}
{
std::cout << "Rab [COPY]\n";
}
Rab(Rab&& masik):
azonosito{std::move(masik.azonosito)}, nev{std::move(masik.nev)}
{
std::cout << "Rab [MOVE]\n";
}
~Rab()
{
std::cout << "Rab [DTOR]\n";
}
};
struct Cella
{
std::vector<Rab> rabok;
Cella() = default;
void berak(Rab const& ujRab)
{
rabok.push_back(ujRab);
}
void athelyez(Rab const& rab, Cella const& honnan)
{
// ...
}
void athelyez(Rab const&& rab, Cella const& honnan)
{
// ...
}
Rab const&& athelyezesElokeszites(std::string azonosito)
{
return std::move(*std::find_if(rabok.begin(), rabok.end(), [&azonosito](auto const& r){
return r.azonosito == azonosito;
}));
}
};
int main()
{
Cella c1, c2;
Rab r {"FE671", "Kiss János"};
c1.berak(r);
c2.athelyez(c1.athelyezesElokeszites("FE671"), c1);
return 0;
}