C++ :: Aufgabe #288 :: Lösung #2

2 Lösungen Lösungen öffentlich
#288

Zahlen in Wörtern ausdrücken

Anfänger - C++ von Gisbert5020 - 30.04.2020 um 15:17 Uhr
Schreiben Sie ein Programm, das Zahlen von 0 bis 99 in Wörtern fasst.
Zusatzaufgabe : Erweitern Sie das Programm von 0 bis 1000.
#2
vote_ok
von 0 (0 Punkte) - 04.08.2020 um 21:27 Uhr
Quellcode ausblenden C-Code
#include <iostream>

std::string strGetEinerName(char iZahl);
std::string strGetZehnerName(char iZahl);

int main()
{
    std::string strdUnd = "und", strHundert = "hundert", strTausend = "tausend", strInputZahl;
    
    std::cout << "Geben Sie eine Zahl von 0 -1000 ein:\n";
    std::cin >> strInputZahl;
    
    if (strInputZahl._Equal("1"))
    {
        std::cout << "eins\n";
    }
    else if (strInputZahl._Equal("11"))
    {
        std::cout << "elf\n";
    }
    else if (strInputZahl._Equal("12"))
    {
        std::cout << "zwoelf\n";
    }
    else if (strInputZahl._Equal("16"))
    {
        std::cout << "sechzehn\n";
    }
    else if (strInputZahl._Equal("1000"))
    {
        std::cout << "eintausend\n";
    }
    else
    {
        if (strInputZahl.size() > 1 && strInputZahl.size() < 3)
        {
            std::cout << strGetEinerName(strInputZahl[1]) << strdUnd << strGetZehnerName(strInputZahl[0]) << "\n";
        }
        else if (strInputZahl.size() > 2 && strInputZahl.size() < 4)
        {
            if (((int)strInputZahl[1] - 48) == 0 && ((int)strInputZahl[2] - 48) == 1)
            {
                std::cout << strGetEinerName(strInputZahl[0])/*Geht auch für die Hunderter*/ << strHundert << "eins\n";
            }
            else if (((int)strInputZahl[1] - 48) == 1 && ((int)strInputZahl[2] - 48) == 1)
            {
                std::cout << strGetEinerName(strInputZahl[0])/*Geht auch für die Hunderter*/ << strHundert << "elf\n";
            }
            else if (((int)strInputZahl[1] - 48) == 1 && ((int)strInputZahl[2] - 48) == 2)
            {
                std::cout << strGetEinerName(strInputZahl[0])/*Geht auch für die Hunderter*/ << strHundert << "zwoelf\n";
            }
            else if (((int)strInputZahl[1] - 48) == 1 && ((int)strInputZahl[2] - 48) == 6)
            {
                std::cout << strGetEinerName(strInputZahl[0])/*Geht auch für die Hunderter*/ << strHundert << "sechzehn\n";
            }
            else if (((int)strInputZahl[1] - 48) > 0)
            {
                if (((int)strInputZahl[2] - 48) > 0)
                {
                    std::cout << strGetEinerName(strInputZahl[0])/*Geht auch für die Hunderter*/ << strHundert << strGetEinerName(strInputZahl[2]) << strdUnd << strGetZehnerName(strInputZahl[1]) << "\n";
                }
                else
                {
                    std::cout << strGetEinerName(strInputZahl[0])/*Geht auch für die Hunderter*/ << strHundert << strGetZehnerName(strInputZahl[1]) << "\n";
                }
            }
            else
            {
                std::cout << strGetEinerName(strInputZahl[0])/*Geht auch für die Hunderter*/ << strHundert << strdUnd << strGetEinerName(strInputZahl[2]) << "\n";
            }
        }
        else if (strInputZahl.size() == 1)
        {
            std::cout << strGetEinerName(strInputZahl[0]) << "\n";
        }
        else
        {
            std::cout << "Diese Zahl wird nicht Supportet!\n";
        }
    }

    system("pause");
    return 0;
}

std::string strGetEinerName(char iZahl)
{
    switch (iZahl)
    {
    case '1':
        return "ein";
        break;
    case '2':
        return "zwei";
        break;
    case '3':
        return "drei";
        break;
    case '4':
        return "vier";
        break;
    case '5':
        return "fuenf";
        break;
    case '6':
        return "sechs";
        break;
    case '7':
        return "sieben";
        break;
    case '8':
        return "acht";
        break;
    case '9':
        return "neun";
        break;
    }
}

std::string strGetZehnerName(char iZahl)
{
    switch (iZahl)
    {
    case '1':
        return "zehn";
        break;
    case '2':
        return "zwanzig";
        break;
    case '3':
        return "dreissig";
        break;
    case '4':
        return "vierzig";
        break;
    case '5':
        return "fuenfzig";
        break;
    case '6':
        return "sechzig";
        break;
    case '7':
        return "siebzig";
        break;
    case '8':
        return "achzig";
        break;
    case '9':
        return "neunzig";
        break;
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2605888

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.