// etusuku.cpp //------------------------------------------------------------------------------ // Testiohjelma etu -ja sukunimen vaihtamiseksi keskenään. // Löytyy hakemistosta n:\kurssit\cpp\moniste\demo\c-ohj // // Vesa Lappalainen 19.1.1998 // // Tehtäviä: // 1) Täydennä aliohjelmat vaihda_etu_suku ja vaihda_suku_etu toimiviksi // // Ohjelma saadaan käyttöön Borland C++ Builder 4.0:ssa seuraavasti: // 1) Käynnistä Builder 4.0 // 2) Valitse File/New/Console Wizard ja paina Finish // 3) Maalaa koko syntynyt tiedosto ja lue tilalle (Ctrl-K Ctrl-R) etusuku.cpp // 4) Valitse Save Project As // 5) Talleta nimelle etusuku // 6) Valitse Run/Run // // // RHidessä pitäisi toimia sellaisenaan. // // Ohjelma saadaan käyttöön Borland C++ 3.1:ssä tai Turbo C++ 3.0 for DOSissa: // 1) Kopioi hakemistossa n:\kurssit\cpp\ali oleva tiedosto vstring. // oman koneesi siihen hakemistoon, jossa on kääntäjän include-tiedosto // ja nimeä kopio nimelle string (ei tarkenninta) // Nämä löydät esim. seuraavasti: // dir string.h /s => kopioi hakemistoon josta löytyy // 2) Avaa tämä tiedosto kääntäjän editorissa (= IDE) ja aja. // #include #include using namespace std; //------------------------------------------------------------------------------ string erota(string &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); string alku = jono.substr(0,p); if ( p == string::npos ) jono = ""; else jono.erase(0,p+1); return alku; } //------------------------------------------------------------------------------ string vaihda_etu_suku(const string &nimi) // Vaihtaa etunimen ja sukunimen keskenään, Jukka Pekka Palo => Palo Jukka Pekka { // Täydennä tähän ja muuta return return nimi; } //------------------------------------------------------------------------------ string vaihda_suku_etu(const string &nimi) // Vaihtaa sukunimen ja etunimen keskenään, Palo Jukka Pekka => Jukka Pekka Palo { // Täydennä tähän ja muuta return return nimi; } //------------------------------------------------------------------------------ void testi(const string& nimi) // Testaa sukunimen ja etunimen vaihtamista molempiin suuntiin { string vaihdettu = vaihda_etu_suku(nimi); string takaisin = vaihda_suku_etu(vaihdettu); cout << nimi << " => " << vaihdettu << " => " << takaisin << endl; } //------------------------------------------------------------------------------ int main(int , char **) { testi("Jukka Pekka Palo"); testi("Pele"); testi("Aku Ankka"); string jono = "1 2 3"; while ( jono != "" ) cout << erota(jono) << ","; cout << endl; return 0; }