 |
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 |
Michael Schubert
Anmeldungsdatum: 10.03.2005 Beiträge: 1 Wohnort: Dessau
|
Verfasst am: 10.03.2005, 21:47 Titel: wortbildungen in qbasic |
|
|
hallo,
ich bin hier vollkommen neu. ich suche ein programm, geschrieben in qbasic, welches aus einem wort beliebiger länge alle möglichen wortbildungen erzeugt.
zb. aus eis wird sie, ise, esi.
ich habe es schon einmal versucht komme aber nicht weiter weil mir einfach die erfahrung fehlt.
es sollte folgendermassen ablaufen.
worteingabe
anzeige der möglichen wortbildungen in zahl
zeigen der wörter in zb 10 ner gruppen
auf tastendruck die nächste gruppe usw. bis zum ende.
danke |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 10.03.2005, 22:19 Titel: |
|
|
Hm....
Also, ich würde das in etwa so organisieren:
Zerlegen des eingegebenen Strings in ein Array:
Code: |
DIM laenge AS INTEGER
INPUT "Geben Sie ein Wort ein", Wort$
laenge = LEN(Wort$)
DIM Buchstaben(1 TO laenge) AS STRING *1
FOR i = 1 TO laenge
Buchstaben(i) = MID$(Wort$, i, 1)
NEXT
|
Die Errechnung der Möglichkeiten geht ganz einfach, über die Fakultät. Da QB diesen Operator nicht bieten, muss man ihn sich selbst nachschreiben, am besten als FUNCTION:
Code: |
DECLARE FUNCTION Fak& (Zahl AS INTEGER)
DIM Moeglichkeiten AS LONG
' eigentlicher Programmcode
Moeglichkeiten = Fak(laenge)
' Weiterer Programmcode...
FUNCTION Fak& (Zahl AS INTEGER)
DIM tmp AS LONG
tmp = 2
FOR i = 3 TO Zahl
tmp = tmp * i
NEXT
Fak& = tmp
END FUNCTION
|
So, jetzt zum Wensentlichen:
Die Wortneubildung:
Code: |
DIM idx AS LONG
' die oben angegebenen Codes...
DIM NeueWoerter (1 TO Moeglichkeiten) AS STRING * laenge
DIM tmp AS STRING * 1
FOR i = 1 TO laenge
tmp = Buchstaben(i)
FOR j = 1 TO laenge
IF NOT(i = j) THEN
idx = idx + 1
MID$(NeueWoerter(idx), i, 1) = Buchstaben(j)
END IF
NEXT
NEXT
|
hmmm.... ich glaube, das könnte funktionieren....
habs aber nicht getestet.
auf jeden fall kommt als ergebnis nicht mehr das wort raus, das eingegeben wurde.
Probiers einfach mal aus.
Für die seitenweise ausgabe:
Code: |
DIM ShowIdx AS LONG
FOR i = 0 TO (idx \ 10)
FOR j = 1 TO 10
ShowIdx = (i * 10) + j
IF ShowIdx > Idx THEN EXIT FOR
LOCATE j + 5, 5
PRINT NeueWoerter(ShowIdx) + SPACE$(80)
NEXT
NEXT
|
Viel Spaß damit!
Wie gesagt, ich bin mir nicht ganz sicher, ob das funktioniert, aber es sollte doch einmal eine Basis sein, auf der man weiterarbeiten kann.
Übrigens:
Kann sein, dass ich mich irre, aber das hier ist nicht ganz der Sinn dieses Forums.
Hierher kommen Progger, die selbst versuchen, etwas auf die Beine zu stellen, vllt für eigenwerbung, vllt um die eine oder andere Codestelle probelesen zu lassen.
Generelle fragen, die unter das Thema "Wie geht ...." fallen, kommen meistens ins Programmiererforum.
Naja, egal
Bis bald mal wieder *g*
Ciao _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
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.
|
|