|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
r3001
Anmeldungsdatum: 05.11.2004 Beiträge: 137 Wohnort: Wien
|
Verfasst am: 05.11.2004, 19:55 Titel: Leerzeichen löschen |
|
|
Hallo alle zusammen!
Ich habe QBasic nun schon mehrere Wochen, kann auch schon ein wenig mehr als die Grundlagen. Jedoch hänge ich gerade bei einer Hausübung, bei der ich nicht mehr weiter weiß:
Wir sollen verschiedene Programme mit unterschiedlichen Funktionen schreiben
a) Zählen wieviele Leerstellen ein Text hat
b) Leerzeichen auslöschen
c) Texte umdrehen (Essen -> nessE)
d) Laufschrift programmieren
Ich habe a, c und d schon fertig, funktionieren auch schon einwandfrei, jedoch bin ich bei b am Ende meines Lateins. Ich habe verschiedene Arten von Codes ausprobiert, darunter mit LEN und MID, jedoch komme ich nicht auf das eigentliche Ergebnis (Leerzeichen löschen)
Ich wollte euch nun fragen, ob ihr vielleicht wisst, wie ich das Programm fertig stellen kann. Wenn möglich genügen mir die Befehle schon, damit ich auch ein wenig was zum ausprobieren habe
Danke schonmal im Voraus!
R |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 05.11.2004, 21:05 Titel: Programme |
|
|
Hallo.
Hausaufgaben anderer machen wir hier nicht so gerne, aber hier trotzdem schon mal ein bisschen:
a.)
Code: | FUNCTION AnzahlDerLeerzeichen%(Text$)
FOR i%=1 TO LEN(Text$)
IF MID$(Text$, i%,1) = " " THEN Counter%=Counter%+1
NEXT i%
AnzahlDerLeerzeichen% = Counter%
END FUNCTION |
b.)
Code: | FUNCTION LeerzeichenEntfernen$(text$)
FOR i% = 1 TO LEN(Text$)
IF MID$(Text$,i%,1) <> " " THEN NeuerText$=NeuerText$+MID$(Text$,i%,1)
NEXT i%
LeerzeichenEntfernen$ = NeuerText$
END FUNCTION |
c.)
Code: | FUNCTION Reverse$(text$)
FOR i% = LEN(text$) TO 1 STEP -1
NeuerText$ = NeuerText$ + MID$(Text$, i%, 1)
NEXT i%
Reverse$ = NeuerText$
END FUNCTION |
So, hab keine Lust mehr.
d.) hast du ja auch schon.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
DOC MAB Gast
|
Verfasst am: 05.11.2004, 21:23 Titel: Wie man Leerzeichen löscht |
|
|
Hi!
Also, um Leerzeichen in einem Text zu löschen muss man folgendes tun:
Zunächst wird der Text vom Benutzer eingegeben. Dieser Text wird in einer Variable vom Typ String gespeichert. Dann wird mit Hilfe von LEN die Länge des Textes ermittelt. Die Länge wird dann als Zahl in einer Variable abgespeichert. Nun wird ein Array erstellt, der genau so groß ist wie der Text lang ist. Das heißt: Wenn die Länge des Textes in der Variable l abgespeichert wurde, steht im Quellcode des Programms:
DIM Array(1 to l) AS STRING
Das Array muss natürlich vom Typ String sein. Nun wird der Text mit Hilfe von MID$ in einzelene Zeichen zerlegt. Jedes Zeichen wird in einer "Variable" des Arrays abgespeichert. Nun wird jede"Variable" des Arrays daraufhin überprüft, ob sie ein Leerzeichen enthält. Die Anzahl der Leerzeichen wird gezählt und das Ergebnis der Zählung in einer Variable abgespeichert. Nun wird von der Länge des Textes die Anzahl der Leerzeichen subtrahiert. Das Ergebnis wird in einer Variable abgespeichert.
Nun wird ein neues Array erstellt, das genau so groß ist, wie das Ergebnis dieser Subtraktion. Das heißt, im Quellcode steht folgendes:
DIM Array2(1 to l2) AS STRING
In diesem Beispiel ist l2 die Variable, die das Ergebnis der Subtraktion enthält. Nun wird in der ersten "Variable" des zweiten Array die erste "Variable" des ersten Arrays abgespeichert, die kein Leerzeichen enthält. So fährt man dann fort.
Nun wird eine neue Variable vom Typ String erstellt. Alle einzelnen
"Variablen" des zweiten Arrays werden nun wieder zusammengefügt und in dieser Variable abgespeichert. Dies ist der Text ohne Leerzeichen.
Diese Hilfe ist natürlich sehr allgemein gehalten. Sie soll dir nur Denkanstöße geben, d. h. du sollst immer noch selbst überlegen. Wenn du jedoch konkretere Hilfe baruchen solltest, dann scheue nicht, die zu schreiben. |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 05.11.2004, 21:25 Titel: |
|
|
ich find sebastians Variante besser, einfach den String zeichen für zeichen durchgehen und wenns kein Leerzeichen ist an den neuen String dranhängen. einfacher, kürzer, schneller und unkomplizierter _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
r3001
Anmeldungsdatum: 05.11.2004 Beiträge: 137 Wohnort: Wien
|
Verfasst am: 05.11.2004, 21:36 Titel: |
|
|
Ok, ich habe die Methode von Sebastian mal in mein Programm eingebaut, jedoch verstehe ich es nur zur Hälfe
Funktionen und Arrays haben wir noch nicht gelernt, ich glaube dies ist bei den Hausaufgaben auch nicht erlaubt. Und danke für die restlichen zwei Beispiele, jedoch habe ich sie schon fertig gehabt, wäre also nicht nötig gewesen.
Gibt es vielleicht noch eine einfachere Lösung bzw. kann mir jemand oben genanntes Beispiel etwas genauer erklären?
Und auch Danke an DOC MAB, obwohl ich Arrays noch nicht verwenden darf, ist deine Lösung eigentlich recht gut
R |
|
Nach oben |
|
|
DOC MAB Gast
|
Verfasst am: 05.11.2004, 22:04 Titel: |
|
|
Wenn ich ehrlich bin, ist Sebastians Variante tatsächlich wesentlich effizienter. Als ich meinen letzten Beitrag zu diesem Thema schrieb war Sebastians Beitrag noch nicht da. Als ich meinen Beitrag dann absante, stellt ich fest, dass Sebastian währenddeseen ebenfalls etwas zu dem Thema geschrieben hatte. Ich wollte mit meinem Beitag also keineswegs andeuten, dass ich glaube, eine bessere Variante gefunden zu haben. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 06.11.2004, 00:01 Titel: Erklärung |
|
|
Hallo.
Mein Verfahren ist ganz simpel.
In einer Schleife, die für jeden Buchstaben des Wortes einmal durchlaufen wird, wird geschaut, ob das aktuelle Zeichen ein Leerzeichen ist. Wenn NICHT, so wird das Zeichen an die neue Zeichenkette angehängt.
Das mit der FUNCTION ist nicht so wichtig. Das macht man, um das Programm übersichtlicher und "schöner" zu machen und um es sich zu sparen, mehrfach gebrauchte Programmteile mehrfach einzubinden.
Eine FUNCTION ruft man so auf:
Code: | a$="Dies ist ein String mit Leerzeichen!"
PRINT LeerzeichenEntfernen$(a$)
SLEEP |
Meine Function muss dazu natürlich im Quellcode mit drin sein.
Du könntest aber auch einfach Folgendes machen:
Code: | Text$="Dies ist ein String mit Leerzeichen!"
FOR i% = 1 TO LEN(Text$)
IF MID$(Text$,i%,1) <> " " THEN NeuerText$=NeuerText$+MID$(Text$,i%,1) 'Überprüfen, ob das aktuelle Zeichen ein Leerzeichen ist. Ist es KEINS, so wird das Zeichen an den neuen String angehängt.
NEXT i%
PRINT NeuerText$ |
...und fertig!
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
r3001
Anmeldungsdatum: 05.11.2004 Beiträge: 137 Wohnort: Wien
|
Verfasst am: 06.11.2004, 00:27 Titel: |
|
|
Super, es geht jetzt wie es sollte!
Vielen herzlichen Dank!
R |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|