Titel präzisiert
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
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
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.
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.
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.
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.
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
Weeks of programming can save you hours of planning
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
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
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.