Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
gdgutknecht Gast
|
Verfasst am: 21.10.2004, 18:27 Titel: ...Anfänger!! |
|
|
Hi Leutz!
Ich hab da eigentlich ein ganz simples problem, aber ich komm damit net zu rande! ziel isses die häufigkeit der zeichen eines strigs zu ermitteln. Also wenn die zeichenfolge "hallo" ist, dann soll das ergebnis 1(1mal h); 1(1mal a); 2(2mal l) usw sein.
ich hab dem so probiert: mein hauptprog inputted den string und gibt ihn zerteilt (mid$) buchstabe für buchstabe an eine sub weiter, die dann mit instr rausfindet, an wlecher stelle der buchst. steht (bei "hallo" also : 12334)
un weiter gehts net. brauch ich neue ansatz, odr kann ich so weitermachen (wie!!)
danke für alle hilfe!!
woody,aligina etc. |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 21.10.2004, 18:50 Titel: |
|
|
dim BS(255) as integer
String$ = "Hello, world!"
for i = 1 to len(String$)
BSNr = asc(mid$(String, i, 1))
BS(BSNr) = BS(BSNr) + 1
next
hab jetzt nicht getestet
//edit: Natürlich kannst du das Array einschränken, z.B. dim BS(65 to 90), wenn mit Zahlen, dann dim BS(48 to 90) _________________ Er ist ein Wunder!
Nein, er ist eine Missgeburt.
Zuletzt bearbeitet von ChemicalWarfare am 21.10.2004, 19:03, insgesamt 3-mal bearbeitet |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 21.10.2004, 18:55 Titel: Ja, so kanns gehen |
|
|
Hallo.
CW's Lösung ist schon ganz gut.
Zur Erklärung des Prinzips: Zu jedem Buchstaben wird die Häufigkeit in ein Array gespeichert.
Wenn die Groß-/Kleinschreibung nicht beachtet werden soll, musst du anstelle von ASC(MID$(String, i, 1)) ASC(UCASE$(MID$(String, i, 1))) nehmen.
Aber du musst unbedingt die Variable String gegen irgendeinen anderen Namen ersetzen, da String eine vordefinierte Basic-Funktion ist. Nimm anstelle davon MeinString oder sowas.
Dann kannst du damit die Häufigkeit anzeigen lassen:
Code: | 'Anzeige-Schleife für Nicht-Case-Sensitive!!
FOR i% = 65 TO 90
PRINT "Das "; CHR$(i%); " kam "; LTRIM$(STR$(BS(i%))); "x vor."
NEXT i%
SLEEP |
edit: Nimm doch das nächste mal einen aussagekräftigen Betreff, gdgutknecht...
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 21.10.2004, 19:07 Titel: AW |
|
|
Hallo.
@CW:
Zitat: | //edit: Natürlich kannst du das Array einschränken, z.B. dim BS(65 to 90), wenn mit Zahlen, dann dim BS(48 to 90) |
Code: | DIM BS(65 TO 90) AS STRING
MeinString$ = "Hello, world!"
for i% = 1 to len(MeinString$)
BSNr% = asc(mid$(MeinString$, i%, 1))
IF BsNr%>64 AND BsNr% <91 THEN BS(BSNr%) = BS(BSNr%) + 1
next i% |
Wenn man das einfach so macht, und in dem String ein ! drinvorkommt, liefert QB aber bei BS(ASC("!")) einen Fehler! Da müsste man also vorher erst überprüfen lassen, ob das Zeichen OK ist.
Das Programm oben geht übringens ohne Fehler.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Zuletzt bearbeitet von Sebastian am 21.10.2004, 19:10, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 21.10.2004, 19:10 Titel: |
|
|
Klar, aber ich meinte "Du KANNST es einschränken"...jetzt überleg mal was ein schreibfauler Typ wie ich damit impliziere...
Aber Du hast recht, ich hätte es hinschreiben sollen. _________________ Er ist ein Wunder!
Nein, er ist eine Missgeburt. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Menlow
Anmeldungsdatum: 21.10.2004 Beiträge: 11
|
Verfasst am: 21.10.2004, 19:50 Titel: |
|
|
Mal eine kleine Frage: Wie kann ich die länge von einem String herausfinden?
Also, wie viele buchstaben in dem wort sind...
Menlow |
|
Nach oben |
|
|
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 21.10.2004, 19:57 Titel: |
|
|
Guck mal oben im Code...
Zitat: |
for i = 1 to len(String$)
|
Hast du's?
Auflösung: len()
//edit: Ach mist, zu spät _________________ Er ist ein Wunder!
Nein, er ist eine Missgeburt. |
|
Nach oben |
|
|
Menlow
Anmeldungsdatum: 21.10.2004 Beiträge: 11
|
Verfasst am: 21.10.2004, 20:13 Titel: |
|
|
ja, es geht
danke |
|
Nach oben |
|
|
gdgutknecht Gast
|
Verfasst am: 25.10.2004, 18:02 Titel: DANKE!! |
|
|
Hey Leute, vielen Dank an euch alle.
'sebastian', dein Stückchen Code hat mir sehr geholfen.
Gruß GdG. |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 26.10.2004, 21:22 Titel: |
|
|
Jetzt bin ich aber beleidigt _________________ Er ist ein Wunder!
Nein, er ist eine Missgeburt. |
|
Nach oben |
|
|
|