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