Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

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

Moderationshinweis von herbivore (24.02.2012 - 09:31)

Titel präzisiert

marioshasta
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
michlG
myCSharp.de - Experte

Avatar #avatar-2909.png


Dabei seit:
Beiträge: 3.430
Herkunft: Naturns - Südtirol - Italien

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

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
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
marioshasta
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
marioshasta
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

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.

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.

private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

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 .
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

beantworten | zitieren | melden

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 .
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
steffen_dec
myCSharp.de - Member



Dabei seit:
Beiträge: 322

beantworten | zitieren | melden

Hallo,

ich hab da was gefunden:


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:


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

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.

private Nachricht | Beiträge des Benutzers