myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » Zahlen (Ziffernfolgen) in Zahlwörter (z.B. fünfundsiebzig) umwandeln
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

geschlossen (weitere Infos)
Zum Ende der Seite springen  

Zahlen (Ziffernfolgen) in Zahlwörter (z.B. fünfundsiebzig) umwandeln

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
myCSharp.de
Moderationshinweis von herbivore (24.02.2012 09:31):

Titel präzisiert
 
marioshasta marioshasta ist männlich
myCSharp.de-Mitglied

Dabei seit: 29.11.2011
Beiträge: 5


marioshasta ist offline

Zahlen (Ziffernfolgen) in Zahlwörter (z.B. fünfundsiebzig) umwandeln

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo

ich möchte gern Zahlen in Buchstaben wandeln Textbox1 Zahl und Textbox2 in Buchstaben.

Wie muss ich das machen, habe leider nocht nicht soviel Erfahrungen mit C# lerne halt noch.

LG

marioshasta
23.02.2012 20:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
michlG michlG ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2909.png


Dabei seit: 26.07.2007
Beiträge: 3.430
Entwicklungsumgebung: VS 2010 PRO
Herkunft: Naturns - Südtirol - Italien


michlG ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo marioshaste,

was meinst du mit Textbox2 in Buchstaben?
Wie willst du eine Zahl in Buchstaben umwandeln bzw. was stellst du dir da als Ergebnis vor?

Bitte beachte:  [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1

Grüße
Michael
23.02.2012 20:06 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.398
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von michlG:
Bitte beachte:  [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1

Und vor allem Punkt 5: Problem genau beschreiben - inkl. genauer Fehlermeldung - und konkrete Fragen stellen
23.02.2012 20:11 Beiträge des Benutzers | zu Buddylist hinzufügen
marioshasta marioshasta ist männlich
myCSharp.de-Mitglied

Dabei seit: 29.11.2011
Beiträge: 5

Themenstarter Thema begonnen von marioshasta

marioshasta ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

In Textbox 1 ist eine x beliebige zahl diese soll in Textbox2 in Buchstaben ausgegeben werden. Besipiel Textbox 1 = 5 ergebnis in Textbox2 = fünf.

Mein Problem ist es das ich nicht weiss wie ich es umsetzen soll.
23.02.2012 20:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
marioshasta marioshasta ist männlich
myCSharp.de-Mitglied

Dabei seit: 29.11.2011
Beiträge: 5

Themenstarter Thema begonnen von marioshasta

marioshasta ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok nach dem mich das nochmal angeschaut bin ich hier wohl offentsichtlich verkehrt. Das Forum ist nur für Profis!!! Schade das man in solchen Foren wie mein mycsharp keine Hilfe bekommt.


mycsharp.de  Moderationshinweis von herbivore (24.02.2012 09:30):

Nein, das Forum ist nicht nur für Profis. Es sind nach Punkt 1.1.1 lediglich keine Fragen nach Grundlagen erlaubt. Das ist was ganz anders.

Und auch Profis müssen sich nach Punkt 5 richten, also das Problem genau beschreiben. Also insbesondere, was sie schon versucht haben und an genau welcher Stelle sie nicht weiterkommen. Auch Profis dürfen nach Punkt 4 nicht einfach nach fertigen Lösungen oder pauschal danach "wie man etwas macht" fragen.

Jeder, der sich daran hält, ist willkommen, egal ob Anfänger oder Profi. Und jeder, der sich daran hält, wird nach Kräften unsere Hilfe bekommen.

 
23.02.2012 20:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
pdelvo pdelvo ist männlich
myCSharp.de-Mitglied

avatar-3354.png


Dabei seit: 02.11.2008
Beiträge: 1.346
Entwicklungsumgebung: Visual Studio 2012 Prof.


pdelvo ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zahlen richtig als Zeichenkette auszugeben ist wahrscheinlich nicht ganz so banal wie es sich anhört. Ich habe einmal kurz gegoogelt und einen Artikel dazu gefunden. Er ist zwar für die Englische ausgabe, aber du kannst es dir ja mal durchgucken und versuchen es entsprechend für Deutsch zu ändern.

 http://www.blackwasp.co.uk/NumberToWords.aspx
23.02.2012 20:35 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.398
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von marioshasta:
Ok nach dem mich das nochmal angeschaut bin ich hier wohl offentsichtlich verkehrt. Das Forum ist nur für Profis!!! Schade das man in solchen Foren wie mein mycsharp keine Hilfe bekommt.

Wieso, was spricht denn dagegen, sein Problem so zu beschreiben, daß auch für andere verständlich ist?

Jedenfalls hab ich dein Problem jetzt verstanden, und kann dir nur sagen, daß es dafür keine automatische Lösung gibt. Du solltest aber mit einer  switch-Anweisung relativ schnell eine eigene Lösung programmieren können.

Christian

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von MrSparkle am 23.02.2012 20:39.

23.02.2012 20:38 Beiträge des Benutzers | zu Buddylist hinzufügen
xxMUROxx xxMUROxx ist männlich
myCSharp.de-Mitglied

avatar-3236.jpg


Dabei seit: 11.01.2010
Beiträge: 1.552
Entwicklungsumgebung: VS 13, SSMS 12
Herkunft: Südtirol/Italien


xxMUROxx ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo marioshasta,

wobei es im englischen noch einfacherer ist Zahlen als Buchstaben umzuschreiben, da die Zahlen ausgesprochen werden wie sie geschrieben werden. In Deutsch ist dies jedoch anders:
74: EN: Seventy-four
DE: Vierundsiebzig
ich denke dies ist sicher die größte Herausforderung.

Gerne helfen wir bei Fragen weiter und würden uns freuen wenn du das Ergebnis wenn du willst uns allen hier zur Verfügung stellst.

Gruß
Michael

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von xxMUROxx am 23.02.2012 20:40.

23.02.2012 20:39 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
steffen_dec steffen_dec ist männlich
myCSharp.de-Mitglied

avatar-701.gif


Dabei seit: 27.03.2007
Beiträge: 322
Entwicklungsumgebung: VS2015 Ent


steffen_dec ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich hab da was gefunden:

C#-Code:
using System;


namespace NrToText
{
     /// <summary>
    /// Converts number in text
    /// </summary>
    public class ConvertToNumber
    {
        private long m_nr;
        private enum NrTypes { Count, Feminin, Masc };
        private NrTypes nrt = NrTypes.Count;
        public ConvertToNumber(long i)
        {
            m_nr = i;
        }
        public override string ToString()
        {
            const long milliard = (int)1e9;
            const long million = (int)1e6;
            const long tausend = (int)1e3;
            if (m_nr < tausend)
                return NullTo999();
            string ret = "";
            int md = (int)(m_nr / milliard);
            if (md != 0)
            {
                ConvertToNumber c = new ConvertToNumber(md);
                c.nrt = NrTypes.Feminin;
                ret = ret + c.NullTo999(); // to throw an exception if too big!
                if (md == 1)
                    ret = ret + "milliarde";
                else
                    ret = ret + "milliarden"; // echt milliarder :)
            }
            int mn = (int)((m_nr - md * milliard) / million);
            if (mn != 0)
            {
                ConvertToNumber v = new ConvertToNumber(mn);
                v.nrt = NrTypes.Feminin;
                ret = ret + v.NullTo999();
                if (mn == 1)
                    ret = ret + "millione";
                else
                    ret = ret + "millionen";
            }
            int tz = (int)((m_nr - md * milliard - mn * million) / tausend);
            if (tz != 0)
            {
                ConvertToNumber v = new ConvertToNumber(tz);
                v.nrt = NrTypes.Masc;  // eintausend !!
                ret = ret + v.NullTo999() + "tausend";
            }
            int einheit = (int)(m_nr - md * milliard - mn * million - tz * tausend);
            if (einheit != 0)
            {
                ConvertToNumber b = new ConvertToNumber(einheit);
                ret = ret + b.ToString();
            }
            return ret;
        }

        private string NullTo999()
        {
            if (m_nr > 999)
                throw new Exception();
            if (m_nr < 100)
                return NullTo99();
            int hund = (int)(m_nr / 100);
            string ret = "";
            if (hund != 0)
            {
                ConvertToNumber c = new ConvertToNumber(hund);
                c.nrt = NrTypes.Masc; // neuter ist gleich
                ret = c.ToString() + "hundert";
            }
            ConvertToNumber c1 = new ConvertToNumber(m_nr % 100);
            ret = ret + c1.ToString();
            return ret;
        }

        private string NullTo99()
        {
            if (m_nr > 99)
                throw new Exception();
            if (m_nr < 13)
                return NullTo12();
            if (13 <= m_nr && m_nr < 20)
            {
                ConvertToNumber c = new ConvertToNumber(m_nr - 10);
                return c.GetNrCompForm() + "zehn";

            }

            // bigger then 20
            int deci = (int)m_nr / 10;
            int unit = (int)m_nr % 10;
            string ret = "";
            if (unit != 0)
            {
                ConvertToNumber c = new ConvertToNumber(unit);
                ret = c.ToString() + "und";
            }
            ConvertToNumber x = new ConvertToNumber(deci);
            ret = ret + x.GetNrCompForm() + "zig";
            return ret;
        }

        private string GetNrCompForm()
        {
            if (m_nr > 9)
                throw new Exception();
            string r = NullTo12();
            if (m_nr == 2)
                return "zwan"; // für zwanzig
            if (m_nr == 6)
                return "sech"; // für siebzig und siebzehn
            if (m_nr == 7)
                return "sieb"; // für siebzig und siebzehn
            return r; // correct number
        }





        private string NullTo12()
        {
            switch (m_nr)
            {
                case 0:
                    return "nul";
                case 1:
                    {
                        return GetEins();
                    }
                case 2:
                    return "zwei";
                case 3:
                    return "drei";
                case 4:
                    return "vier";
                case 5:
                    return "fünf";
                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 "zwölf";
                default:
                    throw new Exception();
            }
        }

        private string GetEins()
        {
            switch (nrt)
            {
                case NrTypes.Count:
                    return "eins";
                case NrTypes.Masc:
                    return "ein";
                case NrTypes.Feminin:
                    return "eine";
            }
            return "";
        }
    }


}

so aufrufen:

C#-Code:
using System;
using NrToText;
namespace ConsoleApplication1
{
    /// <summary>
    /// Entry point
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            Console.Write("Geben Sie Ihres Nummer:");
            string input;
            input=Console.ReadLine();
            long v=0;
            try
            {
                v=Int64.Parse(input);
                ConvertToNumber c;
                c = new ConvertToNumber(v);
                Console.WriteLine(c.ToString());
            }
            catch(Exception)
            {
                Console.WriteLine("Falsche Eingabe.");
            }
            Console.WriteLine("Drucken Sie eine beliebige Taste um das Programm zu beenden.");
            Console.ReadKey();

        }
    }
}

(ich habe es nicht getestet!)

Gruß
Steffen


mycsharp.de  Moderationshinweis von herbivore (24.02.2012 09:38):

In vielen Fällen kann es hilfreich und sinnvoll sein, eine fertige Lösung zu posten. Allerdings sollte man sich damit bei Fragen, die nach Übungsaufgaben oder Hausaufgaben riechen, doch zurückhalten, denn damit bringt man die Hilfesuchenden leicht um den Lerneffekt.
 
23.02.2012 20:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 8 Jahre.
Der letzte Beitrag ist älter als 8 Jahre.
geschlossen (weitere Infos)


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 05.07.2020 00:29