Zahlen in Wörter umwandeln

daniel_hh

Grünschnabel
Hallo,

wie kann ich es machen, dass ich in c++ die Tahlen als Wörter Schreibe und damit rechne Also ich will z.B. in meinem Taschenrechner Programm Schreiben drei + vier

Wo und wie muss ich C++ sagen das z.B. die zahl 3 auch als drei erkannt werden soll?

Währe furchtbar nett wenn ihr mir ein Beispiel sagen könntet
 
Sollten die Zahlen im 10-20 Bereich liegen reichen einfache abfragen mit "if" und nem String.
Sollten es allerdings Zahlen bis 1.000.000 sein hilft dir dieses Programm:
Es wandelt Zahlen in Buchstaben um. Da es in Funktionen gekapselt ist, musst du es nur leicht modifizieren.

PHP:
#include <iostream>
#include <string>
#include <ctype>

using namespace std;

string unter20(unsigned long wert, bool eins)
{
  switch(wert)
    {
      case 1:
        if(eins)
          return("eins");
        else
          return("ein");
      case 2: return("zwei");
      case 3: return("drei");
      case 4: return("vier");
      case 5: return("fuenf");
      case 6: return("sechs");
      case 7: return("sieben");
      case 8: return("acht");
      case 9: return("neun");
      case 10: return("zehn");
      case 11: return("elf");
      case 12: return("zwoelf");
      case 13: return("dreizehn");
      case 14: return("vierzehn");
      case 15: return("fuenfzehn");
      case 16: return("sechszehn");
      case 17: return("siebzehn");
      case 18: return("achtzehn");
      case 19: return("neunzehn");
      default: return("-Fehler-");
    }
}

//*******************************************************

string zehner(unsigned long wert)
{
  switch(wert/10)
    {
      case 2: return("zwanzig");
      case 3: return("dreissig");
      case 4: return("vierzig");
      case 5: return("fuenfzig");
      case 6: return("sechzig");
      case 7: return("siebzig");
      case 8: return("achtzig");
      case 9: return("neunzig");
      default: return("-Fehler-");
    }
}

//*******************************************************

string unter100(unsigned long wert,bool eins)
{

  if(wert<20)
    return(unter20(wert,eins));

  if(wert%10)
    return(unter20(wert%10,false)+"und"+zehner(wert));
  else
    return(zehner(wert));
}

//*******************************************************

string unter1000(unsigned long wert, bool eins)
{
  if(wert<100)
    return(unter100(wert,eins));

  if(wert%100)
    return(unter20(wert/100,false)+"hundert"+unter100(wert%100,eins));
  else
    return(unter20(wert/100,false)+"hundert");
}

//*******************************************************

string tausend(unsigned long wert)
{
  string s="";
  if(wert>=1000)
    s=unter1000(wert/1000,false)+"tausend";
  if(wert%1000)
    s+=unter1000(wert%1000,true);
  return(s);

}

//*******************************************************

string million(unsigned long wert)
{
  string s="";
  if(wert>=1000000)
    {
      int mil=wert/1000000;
      if(mil==1)
        s="einemillion";
      else
        s=unter1000(mil,false)+"millionen";
      wert%=1000000;
    }
  return(s+tausend(wert));
}

//*******************************************************

string milliarde(unsigned long wert)
{
  string s="";
  if(wert>=1000000000)
    {
      int mil=wert/1000000000;
      if(mil==1)
        s="einemilliarde";
      else
        s=unter1000(mil,false)+"milliarden";
      wert%=1000000000;
    }

  return(s+million(wert));
}

//*******************************************************

string toWord(unsigned long wert)
{
  if(wert==0)
    return("Null");

  string s=milliarde(wert);
  s[0]=toupper(s[0]);
  return(s);
}

//*******************************************************




int main()
{
unsigned long wert;

  cout << "Bitte Zahl eingeben:";
  cin >> wert;
  cout << toWord(wert) << endl;

        return 0;
}
 
Zurück