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:

Zufallszahlen & Zeichenketten Sortieren

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



Anmeldungsdatum: 09.01.2006
Beiträge: 3
Wohnort: Hamburg

BeitragVerfasst am: 09.01.2006, 02:30    Titel: Zufallszahlen & Zeichenketten Sortieren Antworten mit Zitat

Guten Abend erstmal,

ich habe da so einige kleinere Problemchen mit meinem FreeBasic Programm. Ich habe Folgendes Geschrieben:
Code:

DIM zahlenarray(1 TO 6) AS INTEGER

RANDOMIZE TIMER
zahlenarray(1) = INT(RND*6+1)
DO
    RANDOMIZE TIMER
    zahlenarray(2) = INT(RND*6+1)
   
LOOP UNTIL zahlenarray(1) <> zahlenarray(2)

DO
    RANDOMIZE TIMER
    zahlenarray(3) = INT(RND*6+1)
   
LOOP UNTIL zahlenarray(1) <> zahlenarray(2) <> zahlenarray(3)
'...
PRINT zahlenarray(1)
PRINT zahlenarray(2)
PRINT zahlenarray(3)
PRINT zahlenarray(4)
PRINT zahlenarray(5)
PRINT zahlenarray(6)
SLEEP

4,5,6 sind natürlich Null. meine Frage ist Warum er mir bei 2 und 3 die gleichen Zahlen Anzeigt. Ich habe auch schon ein anderes Beispiel gesucht im Forum um Dublikate zu verhindern. Bin aber daraus nicht so recht schlau geworden also wollte ich es so lösen mit den Augen rollen

Insgesamt geht es darum das ich eine txt datei habe mit bestimten Zeichenketten 6 Stellig. Ich möchte wenn ich z.B. wenn ich CEHIST
eingebe, das er mir TISCH
aus dieser txt lesen kann. Da bin ich noch recht überfordert. Ich dachte mir eine Kombination aus Zufallsstellungen die dann in Arrays gespeichert werden und wenn er nicht mehr findet sucht er die txt durch.

Soll ein Programm sein um bei textspielen ein bischen zu schummeln. Und weil ich mal wieder meinen Dickkopf durchkriegen will.

Hab auch http://mitglied.lycos.de/agentxi/logger.xls Sowas schon mal gemacht. Nur mit Excel läßt sich mein Problem nur mit zu viel Schreibarbeit lösen, da es auch kürzere Wörter gibt und die dann recht häufig vorkommen, darum will ich das nicht in einer Tabelle machen durchgeknallt

Ob das mit dem Programm einfacher wird - mal sehen. Und sry wenn ich so viel nun geschreibselt hab, ist mein erster Beitrag. Freue mich schon aufs ausprobieren. *g*

Wer das spiel mal sehen will sollte mal auf lycos.de -> Spiele -> alle Spiele -> Text Express gehen. Schönen Abend noch zwinkern
_________________
MSI K8N Neo Platinum, Athlon 64 3200 Newcastel Sockel 754, 756 MB RAM, Radeon 9600pro 256 MB, 200 GB HDD, Windows XP PRO
(c) agentxi zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 09.01.2006, 13:09    Titel: Antworten mit Zitat

Zu deinem Random-Teil: Dass er das immer macht ist komisch, lass die ganzen Randomize Timer doch mal weg, nur einmal am Anfang reicht.

Zu den Wortkombinationen: http://fb.exp-soft.de/fbnp/?view=26 happy
_________________
"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
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 09.01.2006, 15:37    Titel: Re: Zufallszahlen & Zeichenketten Sortieren Antworten mit Zitat

agentxi hat Folgendes geschrieben:

4,5,6 sind natürlich Null. meine Frage ist Warum er mir bei 2 und 3 die gleichen Zahlen Anzeigt.


Hallo. Ich kenne mich da nicht so aus, aber wenn man "a=2=3" schreibt, ist das was anderes, als würde da "a=2" und in der nächsten zeile"a=3" stehen. Schreib dochmal
Code:

Loop Until zahlenarray(1)<>zahlenarray(2) and zahlenarray(1)<> zahlenarray(3)


So müsste das dann klappen. Ich hoffe, dass ich jetzt nicht zuviel Mist erzählt habe. durchgeknallt

Michael
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
agentxi



Anmeldungsdatum: 09.01.2006
Beiträge: 3
Wohnort: Hamburg

BeitragVerfasst am: 09.01.2006, 15:56    Titel: Antworten mit Zitat

Also Das mit dem Wortkombis funktioniert super. Wüßte nur gerne wie es funktioniert. Ist mir ein bischen zu hoch *g*
Die Kommentare bringen mir nicht viel.

Und wie groß dürfen die Sachen Maximal sein ?!
Also ich hab einen 13 stelligen versucht. Er sucht und sucht und sucht. Da schwitzt meine CPU *g*

Und Ich habe das mit dem Zufall ohne Randomize Timer versucht. Kommt nun nicht immer vor das ich doppelte habe, aber doch noch recht oft.

Ich bin zu blöd dafür mit dem Kopf durch die Mauer wollen

@ programmierer
Ich möchte halt das er die anweisung so lange wiederholt bis alle unterschiedlich sind. *g*

Und für meine Wörterdatenbank dachte ich das ich das in Dezimalzahlen umwandlte um eine höhere Kompressionsrate zu erreichen. Ich weiß es gibt schon etwas integriertes in FreeBasic, aber ich würde es extern über Dos Winrar machen *fg* (SHELL ...)

Aber erstmal wird es zeit die datenbank zu füllen. Danke erstmal lächeln
_________________
MSI K8N Neo Platinum, Athlon 64 3200 Newcastel Sockel 754, 756 MB RAM, Radeon 9600pro 256 MB, 200 GB HDD, Windows XP PRO
(c) agentxi zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 09.01.2006, 18:50    Titel: Antworten mit Zitat

Der Ansatz von Programmierer ist korrekt, aber nicht zu Ende gedacht, korrekt heisst es:
Code:
LOOP UNTIL zahlenarray(1) <> zahlenarray(2) and zahlenarray(1) <> zahlenarray(3) and zahlenarray(2) <> zahlenarray(3)

Und nun alles auf einmal:
Code:
DIM zahlenarray(1 TO 6) AS INTEGER

RANDOMIZE TIMER
zahlenarray(1) = INT(RND*6+1)

DO
    zahlenarray(2) = INT(RND*6+1)
LOOP UNTIL zahlenarray(1) <> zahlenarray(2)

DO
    zahlenarray(3) = INT(RND*6+1)
LOOP UNTIL zahlenarray(1) <> zahlenarray(2) and zahlenarray(1) <> zahlenarray(3) and zahlenarray(2) <> zahlenarray(3)
'...
PRINT zahlenarray(1)
PRINT zahlenarray(2)
PRINT zahlenarray(3)
PRINT zahlenarray(4)
PRINT zahlenarray(5)
PRINT zahlenarray(6)
SLEEP

Wobei es sicher noch einfacher ginge ...
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
agentxi



Anmeldungsdatum: 09.01.2006
Beiträge: 3
Wohnort: Hamburg

BeitragVerfasst am: 09.01.2006, 19:44    Titel: Antworten mit Zitat

Michael Frey hat Folgendes geschrieben:
Der Ansatz von Programmierer ist korrekt, aber nicht zu Ende gedacht, korrekt heisst es:
Code:

RANDOMIZE TIMER
zahlenarray(1) = INT(RND*6+1)

Hier kann es Passieren das 7 Angezeigt wird. ((RND lächeln 1 *6+1=7)Da ich diese schleife ein paar tausend mal durchlaufen lassen werde, müßte man das mit einem IF rausfiltern.

Da ich immernoch nicht ganz verstehe wie die "Wortkombinationen.bas" funktioniert (siehe oben) frage ich mal so. Wie kann ich all diese Kombinationen in arrays speichern. Oder wird dies bereits gemacht nur sehe ich das nicht. verwundert

Außerdem ist das UnterProgramm fak und kombinationen falsch. Bei Mögliche Kombinationen werden mir immer 24 angezeigt, was ja schlecht stimmen kann. mit dem Kopf durch die Mauer wollen
Besonders da ich mit 6 und mehr zahlen das getestet habe. Fakulität von 6 = 720 z.B.... (=1*2*3*4*5*6)

Ich habe sie somit auskommentiert und es geht besser
_________________
MSI K8N Neo Platinum, Athlon 64 3200 Newcastel Sockel 754, 756 MB RAM, Radeon 9600pro 256 MB, 200 GB HDD, Windows XP PRO
(c) agentxi zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 09.01.2006, 20:06    Titel: Antworten mit Zitat

"moin" hat ein Länge von 4 Zeichen und 4! ist nun mal 24..
fak rechnet richtig, laß' dir doch mal 6! ausgeben:
Code:
?fak(6)
das ist wie du schon vermutet(sry) hast 720
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
vspickelen



Anmeldungsdatum: 12.06.2005
Beiträge: 13
Wohnort: Holland

BeitragVerfasst am: 11.01.2006, 18:20    Titel: Antworten mit Zitat

So kann man's leicht & einwandfrei machen:

Code:
DEFINT A-Z
max = 6
DIM Zahl(max)
FOR i = 1 TO max
   Zahl(i) = i
NEXT i

RANDOMIZE TIMER
FOR i = 1 TO max
   j = 1 + INT(RND * max)
   SWAP Zahl(i), Zahl(j)
NEXT i

CLS
FOR i = 1 TO max
   PRINT Zahl(i);
NEXT i
SLEEP

Und:
Code:
'Subject: Variationen rekursiv berechnen, Anzahl = n! / (n - r)!
'Author : vspickelen
'Date   : 01-11-2006
'Code   : FreeBasic und alle Q-Basics
DEFINT A-Z
DECLARE SUB Perm (k)
DIM SHARED n, r, Vari$, Wort$
CLS

Wort$ = "CHEIST" '                    Eingabe
Vari$ = "TISCH"

n = LEN(Wort$)
r = LEN(Vari$)
IF r > n THEN END
DIM SHARED p(n)

FOR i = 1 TO n '                      Zeigern initialisieren
  p(i) = i
NEXT i
Perm 1
END

SUB Perm (k)
STATIC t
FOR j = k TO n
   SWAP p(k), p(j)
   IF k < r THEN
      Perm k + 1 '                    Rekursion
   ELSE
      g$ = STRING$(r, " ")
      FOR i = 1 TO r
         MID$(g$, i, 1) = MID$(Wort$, p(i), 1)
      NEXT i
      t = t + 1 '                     nPr Zahler
      g$ = STR$(t) + ":" + g$
      PRINT g$; '                     Variation
      IF INSTR(g$, Vari$) THEN SLEEP 'Funde
   END IF
   SWAP p(k), p(j)
NEXT j
END SUB

Gruß,
vspickelen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 11.01.2006, 18:40    Titel: Antworten mit Zitat

Klasse, das zieh ich mir gleich mal(erst runter, dann) rein grinsen
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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