Juu elikkä simppeli koodin pätkä, joka laskee syöttämästäsi tekstistä sanojen ja kappaleiden määrän.. toimii melkoisen hyvin noin niinkun meikäläisen räpellykseksi vaikka joku älykkäämpi sen varmasti osannee tehdä paremminkin :)
Jokuhan tuosta äkkiä säätää tekstieditorin tai muuta hauskaa :P
/////////////////////////////////////////////////////////////////////////////// // Ohjelma joka laskee syötettyjen sanojen ja kappaleiden määrän. // Kielenä C++. Kääntyy ainakin Dev-C++:lla ja kenties Borlandillakin. // by JKWalas /////////////////////////////////////////////////////////////////////////////// #include <iostream> using namespace std; int main(void) // ohjelma alkaa { char merkki, kappale; // muuttujat merkeille int sanat=0, kappaleet=0; // muuttujat laskureiksi jotka myös alustetaan cout << "Syöttö lopetetaan painamalla enteriä kahdesti peräkkäin\n"; cout << "naputa tekstiä: \n\n"; // ohjeet käyttäjälle do // silmukka kappaleiden ja sanojen käsittelylle { do // aloitetaan silmukka merkkien käsittelyyn { cin.get(merkki); // haetaan merkki käyttäjältä // jos merkki ei ole väli [' '] eikä rivin loppu ['\n'] if (merkki != ' ' && merkki != '\n') { sanat++;//päätellään, että löydettiin sana, lisätään laskuriin do // silmukka sanan loppuosan ohitukseen { cin.get(merkki); // haetaan seuraava merkki // haetaan uutta merkkiä kunnes törmätään väliin [' '] tai // rivin loppuun ['\n'] }while (merkki != ' ' && merkki != '\n'); } // toistetaan edellä ollutta, kunnes löydetään rivin loppu ['\n'] }while (merkki != '\n'); cout << "\n"; // tehdään tyhjä rivi kappaleiden väliin if (sanat != 0) // täytyy olla väh. 1 sana, ennekuin se on kappale kappaleet++; // lisätään kappaleiden määrää cin.get(kappale); // haetaan arvoa kappale-muuttujalle }while (kappale != '\n'); //toistetaan jos ei tullut rivin loppua ['\n'] // kerrotaan kappaleiden ja sanojen lukumäärät cout << "\nKappaleita oli: " << kappaleet << " ja sanoja oli: " << sanat; cout << "\n\n\n"; // uusia rivejä cout << "Paina jotain näppäintä..."; // ohje käyttäjälle cin.get(); // odotetaan nappulan painallusta return 0; // ohjelma loppuu }
Ei nyt ehkä ihan kaikkein hyödyllisin... mutta toimiva on, ja ihan mukavaa soodia. Vaan kommentteja voisi kyllä olla vähän vähemmän...
Harvoin kommentteja liian vähän on. Tosin koodista on kommentoitu turhia osia (esim. return-lause).
Ihan toimiva kappale, tosin tässäkään nyt mitään järkeä. C++:an standardikirjaston stringiluokan metodit tarjoavat tarvittavat funktiot ja niin edespäin. char:in sijalla olisi hyvä käyttää intiä.
Mainitsemasi "stringiluokan metodit" eivät ole minulle tuttuja ja siksi niitä ei ole käytetty.
No ei tullut mieleen tutustua niihin? Kato hei, ei kannata keksiä pyörää uudelleen, vaikka se olisi mitenkä kivaa ja hauskaa. Lue sitä manuaalia. vinkki: std::string, std::istringstream
Täytynee tutustua kunhan ehdin :P Kiitoksia vaan vinkistä.
Kyllä se toimii.
Ihan kiva. Toimiii 4.52 Borlandillakin.
Heikki kirjoitti:
Harvoin kommentteja liian vähän on. Tosin koodista on kommentoitu turhia osia (esim. return-lause).
Yksi harvinaisista liikaa kommentoiduista koodeista :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.