Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Leerzeichen löschen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
r3001



Anmeldungsdatum: 05.11.2004
Beiträge: 137
Wohnort: Wien

BeitragVerfasst am: 05.11.2004, 18:55    Titel: Leerzeichen löschen Antworten mit Zitat

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 lächeln

Danke schonmal im Voraus!

R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 05.11.2004, 20:05    Titel: Programme Antworten mit Zitat

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. Zunge rausstrecken Zunge rausstrecken Zunge rausstrecken

d.) hast du ja auch schon.

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DOC MAB
Gast





BeitragVerfasst am: 05.11.2004, 20:23    Titel: Wie man Leerzeichen löscht Antworten mit Zitat

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

BeitragVerfasst am: 05.11.2004, 20:25    Titel: Antworten mit Zitat

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 zwinkern
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden
r3001



Anmeldungsdatum: 05.11.2004
Beiträge: 137
Wohnort: Wien

BeitragVerfasst am: 05.11.2004, 20:36    Titel: Antworten mit Zitat

Ok, ich habe die Methode von Sebastian mal in mein Programm eingebaut, jedoch verstehe ich es nur zur Hälfe lächeln
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 lächeln

R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DOC MAB
Gast





BeitragVerfasst am: 05.11.2004, 21:04    Titel: Antworten mit Zitat

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

BeitragVerfasst am: 05.11.2004, 23:01    Titel: Erklärung Antworten mit Zitat

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. zwinkern

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! lächeln

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
r3001



Anmeldungsdatum: 05.11.2004
Beiträge: 137
Wohnort: Wien

BeitragVerfasst am: 05.11.2004, 23:27    Titel: Antworten mit Zitat

Super, es geht jetzt wie es sollte! lächeln

Vielen herzlichen Dank!

R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz