www.mikrocontroller.net

Forum: PC-Programmierung C#: Hilfe bei "Algorithmus"


Autor: Ivo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe eine String, indem die Buchstaben L,R,V,Z vorkommen.
Zu einem suche ich eine Möglichkeit um herauszufinden ob auch nur diese 
Buchstaben im String vorkommen zum anderen würde ich aber auch gerne 
aufeinanderfolgende gleiche Buchstaben zusammenfassen:
Aus "RLLLVVLRLLRR" soll dann "R3L2VLR2L2R" werden.
D.h. meine erste Frage, müsste dahin ergänzt werden, dass so ein String 
a la als "R3L2VLR2L2R" als "richtig" erkannt wird.

Mein Problem: Hab keine Ahnung, wie ich weder das eine, noch das andere 
löse..

Könnt ihr mir helfen?

Danke!

Gruß
Ivo

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ivo schrieb:
> Mein Problem: Hab keine Ahnung, wie ich weder das eine, noch das andere
> löse..

1.Bleistift und Papier schnappen.
2.Eine beliebige mögliche Zeichenfolge hinmalen.
3.Das Problem buchstabe für Buchstabe von Hand lösen.
  Dabei schauen, wie du es selbst machst.

Autor: Wegstaben Verbuchsler (wegstabenverbuchsler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Algorithmus ist erst mal "nur" eine Verarbeitungsvorschrift. Ob die 
in Umgansgsprache, Klingonisch, Basic oder C aufgeschrieben ist, ist 
erst einmal egal.

versuche, das Problem erst mal in Umgangssprache zu lösen, z.B.

setze den Wert von "vorheriger_buchstabe" auf <NICHTS>
setze den Wert von "anzahl_vorheriger__gleicher_buchstaben" auf 0
solange der Eingbestring nicht beendet ist, mache:
{
  nimm den nächsten Buchstaben und speichere ihn irgendwo zwischen
  prüfe, ob der Buchstabe in [L,R,V,Z]
     falls ja: Mache irgendwas   /* zum Beispiel eine Hupe einschalten 
*/
     break
     falls nein:
       prüfe, ob der zwischengespeicherte Buchstabe identisch ist mit 
"vorheriger_buchstabe"
          falls ja: ....
          falls nein:  ....

....etc....

}


Und so machst du halt weiter, bis alles das formuliert ist, was du haben 
möchtest.

Danach übersetzt du das in die Programmiersprache deiner Wahl, und schon 
bist du fertig;-)


Übrigens:
Wenn du schon sowas machst, wäre  vielleicht anstelle

> Aus "RLLLVVLRLLRR" soll dann "R3L2VLR2L2R" werden.

diese Variante "zweckmäßiger": (für wen auch immer, der später diesen 
geänderten String weiter verarbeiten soll)

Aus "RLLLVVLRLLRR" soll dann "1R3L2V1L1R2L2R" werden.

(also auch die Einzel-Schritte mit einem Zahlenwert versehen)

Grund: "der Nutzende" des geänderten Strings kann dann einfacher den 
String verarbeiten, und braucht nicht erst noch zusätzlich den String 
wieder aufbereiten mit

"falls Folgendes Zeichen ein Buchstabe ist, und vorheriges Zeichen auch 
ein Buchstabe war, dann setze Zähler zu "1", ansonsten nimm den 
Zählerwert"

Das folgende System bekommt also die Information schon vorgekaut und 
braucht nicht mehr selber drüber nachzudenken, sondern kan direkt 
ausführen.

Autor: stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geh ins Internet und schau dir einfach mal die String Klasse an. Dann 
wirst du merken, dass man deine Probleme ganz leicht lösen kann.
Da sollte was dabei sein, wenn ich mich nicht irre.
http://msdn.microsoft.com/de-de/library/system.str...

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt irgendwie nach Hausaufgaben.
Schau dir mal in Wikipedia den RLE (Run length encoding) Algorithmus an. 
Der macht im Prinzip genau das.

Autor: Wegstaben Verbuchsler (wegstabenverbuchsler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uiui, da fehlt doch glatt ein "nicht" in dieser Zeile:

  prüfe, ob der Buchstabe <NICHT> in [L,R,V,Z]

naja, Ivo hat seine Hausaufgaben oder seine Robotersteuerung bestimmt 
schon fertig ....

Autor: R. Heihoff (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte grade ein bisschen Lust zu Programmieren... :)
Vielleicht hilft dir die angehängte Klasse ja ein wenig weiter!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.