/* function.cpp

	Demonstration von Funktionen


*/


#include <iostream.h>
#include <string>
 

/*
   Ermittelt das erste Wort

   @param satz enthält den ganzen Satz
   @return das erste Wort von satz

*/
	string erstesWort (string satz);


/*
   Ersetzt alle Leerzeichen durch ein anderes Zeichen

   @param text enthält den Text
   @param ersatz enthält das neue Zeichen

*/
	void ersetzeLeerzeichen (string &text, char ersatz = ',');


/*
   Ersetzt alle Leerzeichen durch einen beliebigen String

   @param text enthält den Text
   @param ersatz enthält den neuen String

*/
	void ersetzeLeerzeichen (string &text, string ersatz);



int main()
{

	string testsatz = "Sprachtechnologie ist stark im Kommen.";
    string wort;


    cout << "testsatz: " << testsatz << endl;


    wort = erstesWort(testsatz);


    cout << "erstes Wort: " << wort << endl;


   	ersetzeLeerzeichen(testsatz, string(", aehm, "));

    cout << "er sagte: " << testsatz << endl;


    cin.get();


}




string erstesWort (string satz)
{

	unsigned int i=0;	// Index des aktuellen Zeichens

    // Mit satz.at(i) erhalten wir das aktuelle Zeichen
    // vom Typ 'char'


    // Mit satz.length erhalten wir die Anzahl der
    // Zeichen in satz

    // Mit satz.substr(0,i) erhalten wir die Zeichenkette
    // vom Anfang bis zum i-ten Zeichen von satz


    // Alle Leerzeichen am Anfang überspringen
      while(satz.at(i) == ' ')     // Bis zum Zeilenende
      {

      	if (i>satz.length())  	// Ende erreicht?
        {
         	return string("");   // Leeren String zurückgeben
        }

        i++;

      }


      while(i<=satz.length())     // Bis zum Zeilenende
      {

      	if (satz.at(i) == ' ')
        {
         	return satz.substr(0, i);
        }

        i++;

      }

	return(satz);	// Enthält nur ein Wort


}


void ersetzeLeerzeichen (string &text, char ersatz)
{

	unsigned int i;	// Lautvariable

	string ersatzString;   // Deklaration

    ersatzString += ersatz;   // das Zeichen an den neuen String anhängen

    ersetzeLeerzeichen(text, ersatzString);  // generellere Funktion


	for(i = 0;
    	i < text.length();
        i++)
    {
     	if (text.at(i) == ' ')
        {
         	text.at(i) = ersatz;
        }

    }



 }



void ersetzeLeerzeichen (string &text, string ersatz)
{
	unsigned int i;	// Laufvariable

    string neuerText;

	for(i = 0;
    	i < text.length();
        i++)
    {
     	if (text.at(i) == ' ')
        {
         	neuerText += ersatz;
        }
        else
        {
            neuerText += text.at(i);
        }
    }

    text = neuerText;


} 

