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

  • »
  • Community
  • |
  • Diskussionsforum
Buchstabenwerte eines Wortes zusammenzählen
BangerzZ
myCSharp.de - Member



Dabei seit:
Beiträge: 45

Themenstarter:

Buchstabenwerte eines Wortes zusammenzählen

beantworten | zitieren | melden

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



Dabei seit:
Beiträge: 21

beantworten | zitieren | melden

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



Dabei seit:
Beiträge: 205
Herkunft: Österreich / Steiermark

beantworten | zitieren | melden

Hallo,
Zitat
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
private Nachricht | Beiträge des Benutzers
BangerzZ
myCSharp.de - Member



Dabei seit:
Beiträge: 45

Themenstarter:

beantworten | zitieren | melden

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



Dabei seit:
Beiträge: 21

beantworten | zitieren | melden

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];
}
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo BangerzZ,
Zitat
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
private Nachricht | Beiträge des Benutzers
RusherzZ
myCSharp.de - Member



Dabei seit:
Beiträge: 5
Herkunft: Hamburg

beantworten | zitieren | melden

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



Dabei seit:
Beiträge: 45

Themenstarter:

beantworten | zitieren | melden

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

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo BangerzZ, Hallo RusherzZ,
Zitat von BangerzZ
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.
private Nachricht | Beiträge des Benutzers
BangerzZ
myCSharp.de - Member



Dabei seit:
Beiträge: 45

Themenstarter:

beantworten | zitieren | melden

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

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Zitat von BangerzZ
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.
private Nachricht | Beiträge des Benutzers
RusherzZ
myCSharp.de - Member



Dabei seit:
Beiträge: 5
Herkunft: Hamburg

beantworten | zitieren | melden

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



Dabei seit:
Beiträge: 3.331
Herkunft: Berlin

beantworten | zitieren | melden

Auch das steht schon da:
Zitat von Sekkiy

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



Dabei seit:
Beiträge: 5
Herkunft: Hamburg

beantworten | zitieren | melden

Zitat von juetho

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[/quote]

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?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von RusherzZ am .
greetz RusherzZ
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers