#include class cKorppu { int tiedostoja; int koko; int kaytetty; public: cKorppu(int ikoko=1400) { tiedostoja = 0; koko = ikoko; kaytetty = 0; } int lisaa(int tiedosto) { if ( vapaata() < tiedosto ) return tiedosto; kaytetty += tiedosto; tiedostoja++; return 0; } int vapaata() const { return koko-kaytetty; } void poista(int tiedosto) { if ( kaytetty < tiedosto ) { kaytetty = 0; tiedostoja=0; return; } kaytetty -= tiedosto; if ( tiedostoja > 0 ) tiedostoja--; } int siirra(cKorppu &korppu, int tiedosto) { int yli = lisaa(tiedosto); if ( yli ) return yli; korppu.poista(tiedosto); return 0; } void tulosta() const { cout << "Vapaata " << vapaata() << " KB, " << "käytetty " << kaytetty << " KB, " << tiedostoja << " tiedostoa\n"; } }; int main(void) { cKorppu korppu1(1440); cKorppu korppu2(720); korppu1.lisaa(400); korppu1.tulosta(); // Tulostuu: Vapaata 1040 KB, käytetty 400 KB, 1 tiedostoa korppu1.lisaa(500); korppu1.tulosta(); // Tulostuu: Vapaata 540 KB, käytetty 900 KB, 2 tiedostoa korppu2.lisaa(120); korppu2.tulosta(); // Tulostuu: Vapaata 600 KB, käytetty 120 KB, 1 tiedostoa korppu1.siirra(korppu2,120); korppu1.tulosta(); // Tulostuu: Vapaata 420 KB, käytetty 1020 KB, 3 tiedostoa korppu2.tulosta(); // Tulostuu: Vapaata 720 KB, käytetty 0 KB, 0 tiedostoa korppu2.lisaa(620); korppu1.siirra(korppu2,620); korppu1.tulosta(); // Tulostuu: Vapaata 420 KB, käytetty 1020 KB, 3 tiedostoa korppu2.tulosta(); // Tulostuu: Vapaata 100 KB, käytetty 620 KB, 1 tiedostoa korppu1.poista(500); korppu1.tulosta(); // Tulostuu: Vapaata 920 KB, käytetty 520 KB, 2 tiedostoa return 0; }