// vk2001.cpp #include <iostream> #include <string> /* 04 */ using namespace std; /* 05 */ string piilossa; /* 06 */ int color = 2; /* 07 */ const int petaja = 6; /* 08 */ /* 09 */ class cHiihtaja { /* 10 */ double vauhti; /* 11 */ public: /* 12 */ cHiihtaja() { vauhti = 16.2; color++; } /* 13 */ ~cHiihtaja() { /* 14 */ if ( vauhti > 20 ) color += petaja; /* 15 */ cout << "en oo! "; nayte(); /* 16 */ } /* 17 */ void laakari(int hemo=0) { /* 18 */ vauhti += hemo; /* 19 */ } /* 20 */ void nayte() { /* 21 */ cout << color << " " << vauhti << "\n"; vauhti += 1; /* 22 */ } /* 23 */ }; /* 24 */ /* 25 */ void voitele(cHiihtaja isoniemi, int hess=2) /* 26 */ { /* 27 */ isoniemi.laakari(hess); /* 28 */ isoniemi.nayte(); /* 29 */ } /* 30 */ /* 31 */ int main(void) /* 32 */ { /* 33 */ cHiihtaja tyokalumetsa; /* 34 */ int color = 2*petaja; /* 35 */ tyokalumetsa.laakari(color); /* 36 */ tyokalumetsa.nayte(); /* 37 */ { /* 38 */ cHiihtaja pulmunen; /* 39 */ pulmunen.laakari(); /* 40 */ pulmunen.nayte(); /* 41 */ voitele(tyokalumetsa,color++); /* 42 */ } /* 43 */ tyokalumetsa.nayte(); /* 44 */ return 0; /* 45 */ }
Kissa istuu puussa! Opiskelija sihissee kysymyksiä pähkäillessään. Katolla kukko kiekuu.tulostuisi (erkoistapaukset päätetty tuossa käsitellä niin, että ensimmäinen otetaan):
puussa pähkäillessään. Katolla Opiskelija sihissee kysymyksiä pähkäillessään.
class cTaulukko1 { int lkm; int alkiot[5]; public: ... };class cTaulukko2 { int max_koko; int lkm; int *alkiot; public: ... };
class cTaulukko3 { int max_koko; int lkm; int **alkiot; public: ... };
class cTaulukko4 { int lkm; int *alkiot[5]; public: ... };
int main(void) { cTaulukko1 luvut(5); luvut.lisaa(2001); luvut.lisaa(22); // Kuva tästä tilanteesta luvut.tulosta(); return 0; }
int main(void) { cHavainto tammikuun_lammot; cHavainto helmikuun_lammot; cHavainto maaliskuun_lammot; cHavainto alkuvuosi; // Tulostuu: tammikuun_lammot.lisaa(-24.2); tammikuun_lammot.tulosta(); // Havaintoja: 1 keskiarvo: -24.2 tammikuun_lammot.poista(-24.2); tammikuun_lammot.tulosta(); // Havaintoja: 0 keskiarvo: 0 tammikuun_lammot.lisaa(-14.2); tammikuun_lammot.lisaa(-20.5); helmikuun_lammot.lisaa(-30.7); helmikuun_lammot.lisaa(-7.5); maaliskuun_lammot.lisaa(-18.6); maaliskuun_lammot.lisaa(2.7); maaliskuun_lammot.lisaa(-5.7); alkuvuosi.lisaa(tammikuun_lammot); alkuvuosi.lisaa(helmikuun_lammot); alkuvuosi.lisaa(maaliskuun_lammot); tammikuun_lammot.tulosta(); // Havaintoja: 2 keskiarvo: -17.35 helmikuun_lammot.tulosta(); // Havaintoja: 2 keskiarvo: -19.1 maaliskuun_lammot.tulosta(); // Havaintoja: 3 keskiarvo: -7.2 alkuvuosi.tulosta(); // Havaintoja: 7 keskiarvo: -13.5 return 0; }
** erota - laittaa merkkijonon kahtia valitun merkin ** kohdalta ** erota - laittaa merkkijonon kahtia ensimmäisen ** valitun merkin kohdaltaja koodista: //------------------------------------------------------------------------------ inline vstring erota(vstring &jono, char merkki=' ',bool etsi_takaperin=false) // Erottaa jonosta valitun merkin kohdalta alkuosan ja loppuosan. // Alkuosa palautetaan funktion nimessä ja loppuosa jätetään // jonoon. Merkin etsimissuunta voidana valita (oletuksena alusta päin). // Jos merkkiä ei löydy, palautetaan koko jono ja tyhjennetään jono. // Käyttöesimerkki: olkoon aluksi string jono,s; // 1) jono = "123 456"; s = erota(jono); => jono == "456" s == "123" // 2) jono = "123"; s = erota(jono); => jono == "" s == "123" // 3) jono = "1 2 3"; // while ( jono != "" ) cout << erota(jono) << ","; => tulostaa 1,2,3, // { size_t p; if ( !etsi_takaperin ) p = jono.find(merkki); else p = jono.rfind(merkki); vstring alku = jono.substr(0,p); if ( p == vstring::npos ) jono = ""; else jono.erase(0,p+1); return alku; }
vstring erota(vstring &jono, const vstring &merkit,bool etsi_takaperin=false); ... //------------------------------------------------------------------------------ vstring erota(vstring &jono, const vstring &merkit,bool etsi_takaperin) // Erottaa jonosta valittujen merkkien kohdalta alkuosan ja loppuosan. // Alkuosa palautetaan funktion nimessä ja loppuosa jätetään // jonoon. Merkin etsimissuunta voidana valita (oletuksena alusta päin). // Jos merkkiä ei löydy, palautetaan koko jono ja tyhjennetään jono. // Käyttöesimerkki: olkoon aluksi string jono,s; // 1) jono = "123 456"; s = erota(jono," "); => jono == "456" s == "123" // 2) jono = "123"; s = erota(jono,";"); => jono == "" s == "123" // 3) jono = "1;2 3"; s = erota(jono," ;"); => jono == "2 3" s == "1" // { size_t p; if ( !etsi_takaperin ) p = jono.find_first_of(merkit); else p = jono.find_last_of(merkit); vstring alku = jono.substr(0,p); if ( p == vstring::npos ) jono = ""; else jono.erase(0,p+1); return alku; }