Laden...

Buchstabenwerte eines Wortes zusammenzählen

Erstellt von BangerzZ vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.094 Views
B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 14 Jahren
Buchstabenwerte eines Wortes zusammenzählen

Hi, ich bin neu im Forum und Programiere gerade mit einem Freund zusammen ein Programm. Wir kommen aber gerade nicht weiter. Wir wollen von einem beliebig langen Wort in einer TextBox die wert der Buchstaben addieren. Dabei soll a den Wert 1 b den Wert 2und so weiter haben. hoffe ihr könnt mir/uns helfen.

MfG BangerzZ

S
21 Beiträge seit 2009
vor 14 Jahren

was genau willst du machen? ich kann dich leider nicht verstehen...
willst du zählen wie viele buchstaben es sind?

int laenge = s.Length;

oder willst du die ascii werte addieren? dann musst du den string durchlaufen jeden buchstaben auf int casten und addieren.

M
205 Beiträge seit 2008
vor 14 Jahren

Hallo,

dann musst du den string durchlaufen jeden buchstaben auf int casten und addieren

genau so ist es, wobei du die Groß - Klein Buchstaben beachten musst, am besten wandelst du deinen Text mit der entsorechenden String Methode in Kleinbuchstaben um. Zum Wert deines Strings s an der Stelle i kommst du dann einfach mit:


int Wert = s[i] - 'a' + 1

mfg Markus

B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 14 Jahren

ja soweit waren wir auch schon das wir das durchlaufen müssen aber wir würden es auch gerne speicher aber da es eine unbekannte länge des Wortes hat und für ein string namen keine variable nehemn darf wissen wir da nicht weiter.

S
21 Beiträge seit 2009
vor 14 Jahren

was meinst du mit speichern? als datei? dafür brauchst du einen streamwriter, und du musst System.IO; einbinden, am besten benutzt du hierfür die forensuche.

was meinst du mit "da für ein string namen keine variable nehmen darf"?

generell würde ich dich bitten, deine fragen etwas genauer zu formulieren bzw dich besser auszudrücken. ich weiß nicht ob es nur mir so geht, aber ich denke es geht vielen so.

int summe = 0;
string s = //die eingabe;
for (int i = 0; i < s.Length; ++i)
{
    summe += (int)s[i];
}
49.485 Beiträge seit 2005
vor 14 Jahren

Hallo BangerzZ,

a es eine unbekannte länge des Wortes hat

die Länge eines Strings bekommt man - es geht auch aus dem Code von Sekkiy und man wird es kaum glauben - mit String.Length.

Bitte beachte aber vor allem [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore

R
5 Beiträge seit 2009
vor 14 Jahren

Hi @ all,

ich bin oben genannter Freund und wollte noch mal etwas genauer auf unser Problem eingehen..
Also wir möchten eine Textbox auslesen und als char-Array speichern, sodass wir ein Array von 0 - "Länge des eingegebenen Textes" mit den einzelnen Zeichen haben. (unsere erste Idee wäre eine for-Schleife mit der Länge der Textbox, also "s.Length". Nur das Problem ist noch die "dynamische" Erstellung der einzelnen chars. Geht das vom Ansatz, oder einfacher??)
Diese wollte wir dann in Zahlen nach dem Format a=1, b=2 usw. umwandeln und addieren, sodass man quasi die "Quersumme" des Wortes erhält..
Unsere idee war eben ein char-Array oder kann man diese "Methode" auch auf ganze Strings anwenden? 🤔

Sorry, für den langen Text, aber ich wollt das mal ausführlich erklären.. 😁

greetz RusherzZ

B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 14 Jahren

also noch mal zurück zum Anfang. Ich möchte von einem beliebig langen Wort jeden Buchstaben in einem einzelnen String haben. Also:

String 1 = A
String 2 = B
...

dabei habe ich nicht das Problem die Länge rauszufinden, wie herbivore meinte, sondern nur das ich keine feste Stringanzahl nehmen kann.

Wir hatten uns das so gedacht:


String Text = "ichbineintext"
for (int index = 0; index < s_pText.Length; index++)
{
    String index = Text[index]
}

das wir dan den String 1 haben der dan den ersten Buchstaben enthällt.

5.742 Beiträge seit 2007
vor 14 Jahren

Hallo BangerzZ, Hallo RusherzZ,

Wir hatten uns das so gedacht:

  
String Text = "ichbineintext"  
for (int index = 0; index < s_pText.Length; index++)  
{  
    String index = Text[index]  
}  
  

Da seid ihr schon relativ dicht dran.
Die beiden Compilermeldungen sollten aber so aussagekräftig sein, dass ihr von selbst auf die Lösung kommen solltet - seht dazu auch [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen) .

Schaut auch einmal in die :rtfm: Doku zu String.

B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 14 Jahren

Ja den Fehler den wir gemacht haben verstehe ich. Wir haben versucht zweimal die gleiche Variable zu erstellen aber ich finde da keine Lösung wie ich dem String sagen kann das er nicht den namen des anderen Strings sondern dessen Inhalt als Namen nehmen soll.

5.742 Beiträge seit 2007
vor 14 Jahren

wie ich dem String sagen kann das er nicht den namen des anderen Strings sondern dessen Inhalt als Namen nehmen soll.

Ähm: Hä?!?

Um noch einmal auf euer ursprüngliches Problem zurück zu kommen:
Ihr wollt die "Werte" der einzelnen Buchstaben in einem String addieren.

Dafür habt ihr bisher ganz richtig eine Schleife aufgestellt, die alle Zeichen im String durchläuft.

Nun braucht ihr nur noch die eigentliche Addition vorzunehmen, markus.bodlos hat ja schon gesagt, wie ihr auf den "Wert" eines Zeichens kommt.
Hierzu ist ja der Name, den ihr der Variablen gebt, die das Zeichen enthält, ja vollkommen egal.

Ihr braucht einfach noch eine Variable result (oder ergebnis, ...), die ihr vor der Schleife deklariert und zu der ihr jeweils innerhalb der Schleife den "Wert" des aktuellen Zeichens addiert.

R
5 Beiträge seit 2009
vor 14 Jahren

OK, danke für die ausführliche Hilfe.. Im Prinzip hat das jetzt so hingehauen, aber uns ist jetzt der Teil, wie man den Wert des Buchstaben erhält noch nicht so ganz klar..
Sry, aber wir sind noch zeimliche C#-Anfänger. 😁
Also das Prinzip ist klar, der Wert des Strings s an der Stelle i, aber wie "funktioniert" das " -'a' +1", dass ja letztendlich den "Stringausschnitt" in ein Integer umwandelt..

greetz RusherzZ

J
3.331 Beiträge seit 2006
vor 14 Jahren

Auch das steht schon da:

    summe += (int)s[i];  

Wenn euch diese Werte nicht gefallen, dann nehmt doch:

    summe += ((int)s[i]) - 64;

oder was auch immer...

Zur Erklärung: s_ ist ein char, der ist äquivalent zu einem int, diese int-Werte werden ggf. um 64 verringert und dann addiert.

Jürgen

R
5 Beiträge seit 2009
vor 14 Jahren

Zur Erklärung: s_ ist ein char, der ist äquivalent zu einem int, diese int-Werte werden ggf. um 64 verringert und dann addiert.

Jürgen

Danke, genau dieser Part war nicht ganz klar.. Aber mit eurer Hilfe haben wir unser Programm jetzt fertigstellen können.. Vielen Dank an alle Helfer!

EDIT: War das eigentlich das richtige Forum für so eine Frage? Oder ham solche Fragen, wie "Ich komm nicht weiter" ein eigenes?

greetz RusherzZ

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo RusherzZ,

es ist nicht eine Frage des richtigen Unterforums, sondern der richtigen Fragen. Ich habe schon oben auf [Hinweis] Wie poste ich richtig? Punkt 1.1.1 hingewiesen. Fragen wir ihr sie gestellt habt, sind überhaupt nicht erlaubt. Das sind Grundlagen, dir ihr euch bitte selbst aus einem Buch aneignet.

herbivore