[Pseudocode] Zeichenkette auf eine bestimmte Mindesttext-Länge prüfen

  • Sonstige

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Radinator.

    [Pseudocode] Zeichenkette auf eine bestimmte Mindesttext-Länge prüfen

    Servus!

    Erst mal vorweg: Meine Frage bezieht sich auf keine spezielle Programmiersprache, lediglich einen Pseudocode bzw einen theoretische Ansatz, welcher mir meine Aufgabe löst.
    Und zwar: Wie kann ich eine Zeichenkette, von der ich die Gesamtlänge weiß, auf eine bestimmte Mindesttextlänge prüfen. Also sicherstellen, dass der Benutzer mindestens X Zeichen eingegeben hat?

    (Keline) Haken: Das ganze ist recht low-level-ig angesiedelt, heißt also
    - Es steht keine .Length() Funktion zur Verfügung
    - Substring kann verwendet werden
    - Konversion von Text in ein Char-Array ist möglich
    - Schleifen (For Schleife) verfügbar
    - Prüfung nur Leerzeichen oder jedes beliebige andere Unicode Zeichen möglich
    - Trim Funktion nicht verfügbar

    Hier mal mein bisheriger Versuch:
    1.) Text in Char Array zerlegen
    2.) Mit Schleife über Array laufen und in mehreren Durchgängen die führenden, mittigen und anhängenden Leerstellen eleminieren
    3.) Prüfen, ob Indizes 0 bis X-1 (wobei X die Mindestlänge ist) befüllt sind
    Edit: Bzw zählen, WIE viele NICHT Leerzeichen vorkommen

    Nachteil von dem, ist natürlich recht aufgeblähter Code. Meine Hoffnung wäre, dass jemand da eine andere und/oder schnellere Methode hätte.

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Radinator“ ()

    Ich versteh die Frage noch nicht so ganz. Willst du alle Whitespaces entfernen und dann auf Länge > Min prüfen? Dann gehst du einfach alle Zeichen bis '\0' durch und zählst alle Zeichen die erwünscht sind bzw. ignorierst die Unerwünschten.
    @Radinator Wenn der Buffer initial mit 0 befüllt wird, musst Du lediglich von hinten das erste Nicht-Null-Element finden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Gonger96 schrieb:

    Willst du alle Whitespaces entfernen
    Auf das läuft meine Lösung hinaus

    Gonger96 schrieb:

    dann auf Länge > Min prüfen
    Das ist das Ziel

    Gonger96 schrieb:

    alle Zeichen bis '\0'
    Blöderweise sind auf dem System, auf dem ich das lösen muss, die Felder (sofern sie Zeichenfelder, also CHAR sind), immer mit Leerzeichen ausgefüllt. Was der Benutzer im Prinzip macht, ist lediglich die Leerzeichen durch Alphanumerische Zeichen zu ersetzen.

    RodFromGermany schrieb:

    lediglich von hinten das erste Nicht-Null-Element finden.
    Ich gehe mal davon aus, dass du damit meinst, den Index rausfinden und wenn der kleiner meiner Mindestlänge ist, Alarm schlagen?

    Ich hab mir noch mal das Entfernen der Leerzeichen angesehen, bin darauf gekommen, dass es wesentlich schneller/einfacher geht, wenn man nicht mit einem einzigen Array, sondern mit 2 arbeitet *augen roll*:

    Quellcode

    1. a1[20] = {}
    2. a1[20] = {}
    3. text = ... // 20 Zeichen lang
    4. z = 0
    5. x = 0
    6. a1 = string_to_array(text)
    7. for (x = 1 bis 20, x++)
    8. if (a1[x] != ' ')
    9. z++
    10. a2[z] = a1[x]
    11. end if
    12. end for
    13. z = 0
    14. for (x = 1 bis 20, x++)
    15. if (a2[x] != ' ')
    16. z++
    17. end if
    18. end for
    19. if (z < MINDESTLAENGE)
    20. Error("Zu wenig Zeichen!!")
    21. end if


    Aber danke an Alle für's durchlesen :D
    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell