Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Wert einer Zahl um 1 erhöhen?


Paulchengb - Di 14.08.07 11:49
Titel: Wert einer Zahl um 1 erhöhen?
Hallo,

wie kann ich denn den Wert einer Zahl um die Anzahl erhöhen, so oft die Bedingung erreicht wird?


Delphi-Quelltext
1:
2:
3:
4:
if <Bedingung>
then

z:= 1++;


Aber das funktioniert nicht. Da ist das ; nach den beiden ++ rot unterringelt --> Syntaxfehler...


Moderiert von user profile iconGausi: Topic aus VCL (Visual Component Library) verschoben am Di 14.08.2007 um 11:52


Gausi - Di 14.08.07 11:52

In Delphi gibts kein ++. Hier kann man das so machen:  z := z + 1; oder inc(z);.


Paulchengb - Di 14.08.07 11:57

Hi,
danke. Das geht jetzt schonmal, aber die Operation wird nur 1x ausgeführt...

Also ich erstelle 10 Zufallszahlen und folgende Eigenschaften sollen erfüllt sein:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if (v<=x) and (x<=b) and (v<=y) and (y<=b) and (v<=z) and (z<=b) then

p:= p + 1;

labelededit5.Text:=floattostr (p);
end;


x,y,z sind die 1.,2.,3. Stelle der Zufallszahl und v=von b=bis, welche Ziffern enthalten sein sollen, z.B. v=3, b=6 --> es sollen nur die Zufallszahlen gezählt werden, die 3,4,5 und 6 enthalten.


pigfacejoe - Di 14.08.07 12:07

Da brauchste ne Wiederholungsanweisung, so wie ich das verstehe.
In diesem Fall würde sich da ja eine for Anweisung anbieten.
Also in etwa so:

Delphi-Quelltext
1:
2:
3:
4:
for p:= v to b do
begin
//DEine Überprüfungen,p darf nicht erhöht werden , geschieht automatisch
end;

So sollte das klappen,

Schönen Gruss
Pigface Joe


Narses - Di 14.08.07 12:09

Moin!

Dein Ansatz ist falsch, vielleicht geht es besser so:
- Eine Schleife, die über alle erzeugten Zufallszahlen läuft
- Eine innere Schleife, die über die Stellen der aktuellen Zufallszahl läuft
- in dieser Schleife prüfen, ob die aktuelle Ziffer der aktuellen Zufallszahl im gesuchten Bereich liegt: das geht z.B. so: if (StelleInZufallszahl[Position] in ['3'..'6']) then
:idea:

cu
Narses


TheAxeEffect - Di 14.08.07 19:21

was meinst du denn?
meinst so solange etwas so ist wie es sein soll, soll er es erhöhen, oder er soll es x-mal erhöhen oder er soll x mal prüfen, ob etwas so ist wie es sein soll, und ggf. erhöhen?
fall 1:

Delphi-Quelltext
1:
2:
3:
while (bedingung) do begin
p:=p+1//oder inc(p)
end;

fall 2:

Delphi-Quelltext
1:
2:
3:
for loop-variable(zb. i):=1 to x do begin
inc(p);
end;

fall3:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<div class="syntaxContainer">    <div class="syntaxTitle genmed">        <b>Delphi-Quelltext</b>    </div>    <div class="syntax">        <table cellspacing="0" cellpadding="0">            <tr>                <td valign="top" style="text-align: right; padding-right: 3px; border: #DBE4EB solid; border-width: 0px 1px 0px 0px;">                    <pre>1:
2:
3:
4:
5:
</pre>                </td>                <td valign="top" style="width: 100%; padding-left: 3px;">                    <pre class="sourcecode"><span class="codekey">for</span> loop-variable(zb. i):=<span class="codenumber">1</span> <span class="codekey">to</span> x <span class="codekey">do</span> <span class="codekey">begin</span>
<span class="codekey">if</span> bedingung <span class="codekey">then</span> <span class="codekey">begin</span>
inc(p);
<span class="codekey">end</span>;
<span class="codekey">end</span>;                    </pre>                </td>            </tr>        </table>    </div></div>

oder meinst du überhaupt was anderes?


Paulchengb - Di 14.08.07 19:58

@TheAxeEffect,
ich mein, dass wenn ich schon 10 Zufallszahlen erstellt habe, dann gibt es die ja. :P Nun sollen die 10 erstellen Zahlen auf "Bedingungen" überprüft werden, zB., dass sie nur die Ziffern 1-3 enthalten. Verstehst? Also so wie ich das lese, ist Fall 3 das richtige für mich. Ich habe das jetzt auch mal versucht, nur leider wird mir in dem edit.text Feld nichts ausgegeben. Es bleibt einfach leer.

Hier der Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
// Prozentsatz ausrechnen
for i:= 1 to x do
begin
if (v<=x) and (x<=b) and (v<=y) and (y<=b) and (v<=z) and (z<=b) then
begin
p:= p+1;
labelededit5.Text:=floattostr (p);
end;
end;
end;


TheAxeEffect - Di 14.08.07 20:04

du weißt eh, dass du diese ausgabe in der schleife eingebunden hast oder?
du willst aber nur das endergebnis oder?
mach die mal aus der schleife raus.
dann: hast die die variable x deklariert, und definiert..wenn du mit der nix machst ist die 0, und die schleife geht erst garnich los.
edit: wo liegen deine zufallszahlen überhaupt? und: könnteste den ganzen code posten, dann wären wir eher imstande dir weiterzuhelfen^^
mfg,
simon


Paulchengb - Mi 15.08.07 12:31

Danke für eure Hilfe. Ich habe es heute hinbekommen...