Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: C++: laskee kirjoittamiesi sanojen ja kappaleiden määrän

Sivun loppuun

JKWalas [31.12.2003 08:50:56]

#

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
}

sooda [31.12.2003 12:32:31]

#

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...

Heikki [31.12.2003 13:20:54]

#

Harvoin kommentteja liian vähän on. Tosin koodista on kommentoitu turhia osia (esim. return-lause).

Anzuhan [01.01.2004 11:32:15]

#

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ä.

JKWalas [01.01.2004 21:32:38]

#

Mainitsemasi "stringiluokan metodit" eivät ole minulle tuttuja ja siksi niitä ei ole käytetty.

Anzuhan [02.01.2004 22:34:07]

#

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

JKWalas [04.01.2004 14:54:27]

#

Täytynee tutustua kunhan ehdin :P Kiitoksia vaan vinkistä.

Sweiz [22.08.2005 19:27:06]

#

Kyllä se toimii.

jack [29.09.2005 10:26:11]

#

Ihan kiva. Toimiii 4.52 Borlandillakin.

hyprE [18.12.2008 07:51:08]

#

Heikki kirjoitti:

Harvoin kommentteja liian vähän on. Tosin koodista on kommentoitu turhia osia (esim. return-lause).

Yksi harvinaisista liikaa kommentoiduista koodeista :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta