Deutsch
Forum

Erledigt: rnd-Problem

 
Man glaub es kaum, ich programmiere wieder. (Damit habe ich einigen die große Überraschung genommen)

Bei meinem derzeitigen Projekt spielen Zufallsgeneratoren eine große Rolle. Jedoch scheint die zufällige Auswahl nicht ganz zu klappen.
KompilierenMarkierenSeparieren
randomize

whilenot e%

    if classes%=1

        sizerate%=rnd(150)

    elseif classes%=2

        sizerate%=rnd(100)

    elseif classes%=3

        sizerate%=rnd(50)
        e%=1

    endif

    if classes%=1 and sizerate%>75

        e%=1

    elseif classes%=2 and sizerate%>50

        e%=1

    endif

wend

e%=0

wenn classes%=3 ist funktioniert die Schleife wunderbar, hat classes jedoch den Wert 1 oder 2, macht mein PC nichts und hängt scheinbar in der Schleife fest.
Ist bestimmt mal wieder was total dummes, ich sehs kommen. Aber bis jetzt versteh ich es nicht.

Noch eine Frage: randomize gilt für alle nachfolgenden rnd oder?

Gruß
CHT
 
23.06.2009  
 




Jörg
Sellmeyer
Wie soll er auch was anderes machen, da du in der if-Struktur nur bei classes% = 3 e% auf 1 setzt
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
23.06.2009  
 




RGH
Hallo,

das gelistete Programm ist zwar mangels Vraiablendeklarationen nicht laufffähig, so dass ich es nicht ausprobieren konnte, aber ein Fehler fällt softort auf: Es fehlen die Klammern bei den Bedingungen! (Siehe in der Hilfe unter "6. Operatoren", Stichwort "Hierarchie".) So geht es vermutlich:
KompilierenMarkierenSeparieren
...

elseif (classes% = 2) and (sizerate% > 50)

...

In Deinem Code würde wegen der Hierarchie zunächst "2 and sizerate%" aufgelöst und das ist entweder 1 oder 0. Dann würde "classes% = 1" oder "classes% = 0" aufgelöst werden und dies ergibt auch wieder entweder 1 oder 0. Und da dies niemals größer 50 ist, ist die Bedingung ohne Klammern immer falsch, völlig unabhängig vom Wert sizerate%.

Kleiner Tipp: Wenn man sich die Hierarchie der Operatoren nicht merken will oder kann, einfach immer die Klammern so setzen, wie man es gewertet haben möchte.

Da es unterschiedliche Sprachen (und selbst unterschiedliche BASIC-Dialekte) unterschiedlich handhaben, habe ich mich an der Hierarchie der Sprache orientiert, in der ich XProfan geschrieben habe: Pascal. (Ich nutze Delphi und Delphis Programmiersprache ist Object-Pascal.)

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
23.06.2009  
 



naja, ich habe ja noch ein zweites if, wo ich das abfrage

selbst bei
KompilierenMarkierenSeparieren
whilenot e%

    if classes%=1

        sizerate%=rnd(150)

        if classes%=1 and sizerate%>75

            e%=1

        endif

    elseif classes%=2

        sizerate%=rnd(100)

        if classes%=2 and sizerate%>50

            e%=1

        endif

    elseif classes%=3

        sizerate%=rnd(50)
        e%=1

    endif

wend


tut sich nichts.

ich verstehe meinen Fehler nicht

Gruß
CHT
 
23.06.2009  
 




Dieter
Zornow
Hast du Rolands Posting nicht gelesen.

in deiner zweiten If-Abfrage
KompilierenMarkierenSeparieren
if (classes%=2) and (sizerate%>50)


Die Klammern setzen dann gehts
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
23.06.2009  
 



Ich habe RGH´s Post leider erst im Nachhinein gesehen, weil ich etwas gebraucht habe mit meinem eigenen Post und noch etwas geprüft habe.
Also ich schaue mal ...
... und tatsächlich! Was 4 Klammern so ausmachen können. Danke an RGH und Dieter!

Gruß
CHT
 
23.06.2009  
 



[offtopic]
Gegen das Problem derartiger Posting-Überschneidungen habe ich bereits ein Mittel im Test.
So wird ein Beitrag sofort angezeigt nach dem Absenden - auch wenn man grad einen Beitrag verfässt.
Ebenso wird dann im Thread zu sehen sein, ob ein Mitglied grad einen Beitrag verfässt, indem der Beitrag bereits erscheint mit entsprechendem Bemerk und einem "Stift".
[/offtopic]
 
23.06.2009  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.905 Betrachtungen

Unbenanntvor 0 min.
iF14.09.2020
RudiB.17.05.2020
Unbenannt01.09.2019
Pauli15.04.2013
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie