power-poler
Goto Top

Als was list Batch die 10? (Und gegebenenfalls alle zaheln mit nullen)

Guten Morgen
Habe da ein kleines Problem mit Zahlen auswerten.

Habe mir einen kleinen Script geschrieben, der eine Zufallszahl zwischen 1 und 10 generiert (soll später Variable sein, zwischen welchen werten)
Zahlen von 1-9 funktionieren.
Nur die 10 Tanzt aus der reihe.
Sagen wir, als gesuchte zahl ist 1.
Gebe ich 2 ein kommt die Ausgabe die gesuchte zahl ist kleiner.
Was ja stimmt.
Gebe ich 10 ein, gesuchte Zahl ist größer
Umgekehrt genauso.
gesuchte zahl ist 10
gebe ich 2-9 ein gesuchte Zahl ist kleiner.
Bei 1 gesuchte zahl ist größer

Als was wird die 10 interpretiert?

Hier der Code:

@echo off & setlocal
set Richtig=0
set Falsch=0
:Test
SET MIN=1
SET MAX=10
SET /a Zufall=MIN+(MAX-MIN+1)*%random%/32768 
echo Ratte eine Zahl zwischen 1 und 10
echo %Zufall%
:Neu
set Eingabe=
set /p "Eingabe= "   
if %Eingabe% geq %MIN% if %Eingabe% leq %MAX% goto :LOL

echo Falsche Eingabe
echo normal
sleep.exe 1
set /a Falsch=%Falsch%+1
::cls
goto :Neu

:LOL
if "%Eingabe%" lss "%Zufall%" goto :Groesser  
if "%Eingabe%" gtr "%Zufall%" goto :Kleiner  
if "%Eingabe%" equ "%Zufall%" goto :Richtig  
::if "%Eingabe%" equ "Ergebnis" goto :Ergebnis 

:Richtig
echo Richtig die Zahl ist %Zufall%
echo normal
sleep.exe 1
set /a Richtig=%Richtig%+1
::cls
goto :Test

:Ergebnis
echo Richtig: %Richtig%
echo Falsch: %Falsch%
sleep.exe 3
::cls
goto :Test

:Kleiner
echo Die gesuchte Zahl ist kleiner
goto :Neu

:Groesser
echo Die gesuchte Zahl ist groesser
goto :Neu

Schonmal vielen Dank im Voraus
Mfg
Power-Poler

Content-Key: 159240

Url: https://administrator.de/contentid/159240

Ausgedruckt am: 28.03.2024 um 19:03 Uhr

Mitglied: 76109
76109 23.01.2011 um 12:29:15 Uhr
Goto Top
Hallo Power-Poler!

Versuchs mal mit:
Set /a Min=1
Set /a Max=10
Option /a steht für numerischen Ausdruck

Gruß Dieter
Mitglied: Power-Poler
Power-Poler 23.01.2011 um 13:06:29 Uhr
Goto Top
Hat leider nichts gebracht.
Danke f´ür deine Antwort
Mitglied: bastla
bastla 23.01.2011 um 13:47:45 Uhr
Goto Top
Hallo Power-Poler!

Du solltest Dich nicht beschweren, vom CMD-Interpreter ernstgenommen zu werden face-wink: Wenn Du einen alphanumerischen Vergleich (Zeilen 23 bis 25) verlangst, wird der natürlich auch durchgeführt - daher einfach die Anführungszeichen entfernen ...
Noch zwei Anmerkungen zu den Berechnungen:
Ich bevorzuge beim Zählen die abgekürzte Schreibweise (funktioniert nämlich auch innerhalb einer Schleife ohne "delayedExpansion")
set /a Falsch+=1
und eine Zufallszahl im Bereich 1 bis 10 lässt sich (im Batch, ansonsten nur ein einzelnes Prozentzeichen für die Modulo-Operation) einfacher mit
set /a Zufall=%random% %% 10 + 1
erzeugen ...

Grüße
bastla

P.S.: Du scheinst von den Anwendern Deines Batches keine sonderlich hohe Meinung zu haben face-wink:
echo Ratte eine Zahl zwischen 1 und 10
(Und eigentlich fehlen da auch die Satzzeichen "," und "!")
Mitglied: Power-Poler
Power-Poler 23.01.2011 um 13:59:50 Uhr
Goto Top
Ok, danke das war es wohl.
Wo besteht für den Interpreten den der unterschied zwischen 10 und "10" ??
Das andere, echo Ratte eine Zahl zwischen 1 und 10; bin noch nicht fertig, und warum ein !?
Mitglied: bastla
bastla 23.01.2011 um 14:04:14 Uhr
Goto Top
@Power-Poler
Wo besteht für den Interpreten den der unterschied zwischen 10 und "10" ??
Na ja, Zahl vs Text?
"10" ist nunmal kleiner als "2", da ja bei einem Textvergleich zeichenweise vorgegangen wird ...
Das andere, echo Ratte eine Zahl zwischen 1 und 10; bin noch nicht fertig, und warum ein !?
Meintest Du denn nicht:
Ratte, eine Zahl zwischen 1 und 10!
0face-smile

Grüße
bastla
Mitglied: Biber
Biber 23.01.2011 um 18:59:11 Uhr
Goto Top
[OT]
Zitat von @bastla:
Ratte, eine Zahl zwischen 1 und 10!
0face-smile
Bei Userinnen schreibt er ja vielleicht
Mäuschen, eine Zahl zwischen 1 und 10!
[/OT]
Mitglied: Power-Poler
Power-Poler 23.01.2011 um 19:11:57 Uhr
Goto Top
hmpf
Werde das natürlich noch ändern

*Irgendwie fehlt mir hier der SchmolSmiley*
Mitglied: pieh-ejdsch
pieh-ejdsch 24.01.2011 um 00:44:54 Uhr
Goto Top
moin Power-Poler,

direkt nach der Zeile 12:
set /p "Eingabe= "

kannst Du noch diverse eine bessere Prüfung Einbauen
(
set /a "Eingabe=%eingabe%"  
) 2>nul || set "Eingabe=0"  

somit kannst Du auch Gefahrlos die (Überflüssigen) doppelten Hochkommata in den VergleichsZeilen weglassen

Zeile 18 und 32
set /a Falsch=%Falsch%+1
kannst Du aus so schreiben
set /a Falsch+=1

Gruß Phil
Mitglied: Power-Poler
Power-Poler 24.01.2011 um 18:50:47 Uhr
Goto Top
OK Danke, wusste nicht das ich Variablen auch so Hoch Zählen lassen kann.

Was überprüft den Zeile 1-3 ?
Was meinst du mit "doppelten Hochkommata" ?
Auf Welche Zeile beziehst du dich hier
Mitglied: pieh-ejdsch
pieh-ejdsch 24.01.2011 um 20:19:42 Uhr
Goto Top
moin Power-Poler,

es wird alles andere Eingegebene ausser Ziffern selbst als Variable aufgelöst. wenn die Variable nicht definiert ist wird sie auch nicht gesetzt. Also der Wert 0 wird eingetragen.
wenn Du zufall eingibst wird die Variable zufall als Zahl gesetzt.

die VergleichsZeilen (das was bastla schon erwähnt hat)
if "%Eingabe%" lss "%Zufall%" goto :Groesser
if "%Eingabe%" gtr "%Zufall%" goto :Kleiner
if "%Eingabe%" equ "%Zufall%" goto :Richtig
if "%Eingabe%" equ "Ergebnis" goto :Ergebnis
wird immer ein Vergleich auf der Basis von Zeichenfolgen vonstatten gehen:
if "aa" lss "ab" echo ja
das entsprich genau der Sortierung nach dem Alphabet, so wie die Reihenfolge der Wörter im Duden oder bei der Ausgabe vom Befehl DIR (ohne sortierung) ist.
Zahlen werden so hier Sortiert wie das Beispiel für die CMD Line:
(for %i in (2 4 6 8 10 11 1 3 5 20 100 22) do @echo %i)|sort
1
10
100
11
2
20
22
3
4
5
6
8
da siehst Du auch gleich, dass ein Zeichenvergleich ganz anders die ZahlenReihenfolge hat.

schreib daher Reine Zahlenvergeleiche mit Variablen ohne Umschlossene Doppelte Hochkommata
if %Variable% geq 1 echo Variable ist größer als 1

Gruß Phil
Mitglied: Biber
Biber 24.01.2011 um 20:54:16 Uhr
Goto Top
Moin pieh-ejsdch,

meinst du nicht, du hättest wenigstens einen Teil der kurzen Fragen ähnlich kurz&knackig abfackeln können?
Zitat von @Power-Poler:
Was meinst du mit "doppelten Hochkommata" ?
Anführungszeichen.

So zum Beispiel... *gg

Grüße
Biber