RE: Why do FOR/NEXT variables end up +1 more? - Kernelpanic - 08-25-2023
It's amazing what one can all do in this case. That's fun! - And everything goes back to a For loop.
Calling a Sub procedure and/or an EXE file.
PS: Damn, if one enter "n" it doesn't work. I'll take a look tomorrow.
Code: (Select All)
'Aus einer While-Schleife eine Sub-Prozedur aufrufen - 25. Aug. 2023
$Console:Only
Option _Explicit
Declare Sub Berechnen(eingabe As Integer)
Dim As Integer i, eingabe, modBedingung
Dim As String antwort
Print
Print "While-Schleife wird bis zur Eingabe durchlaufen, wobei"
Print "bei Mod 7 = 0 jedesmal eine Ausgabe erfolgt."
Print
Input "Eingabe : ", eingabe
Input "Modangabe: ", modBedingung
Print: Print
'While-Schleife wird bis zur Eingabe durchlaufen, wobei
'bei Mod 7 = 0 jedesmal eine Ausgabe erfolgt
'Ergaenst um Aufruf eines externen Programms, wenn Bedingung erfuellt
i = 1
While i < eingabe
i = i + 1
If i Mod modBedingung = 0 Then
Berechnen (i)
ElseIf i Mod 23 = 0 Then
Do
Print
Input "Weiter J/N: ", antwort
Loop Until UCase$(antwort$) = "J"
Run "D:\Lab\QuickBasic64\Finanz+Mathe\Geometrie\Rechtwinkliges-Dreieck-Hypo.exe"
End If
Wend
End 'Hauptprogramm
Sub Berechnen (eingabe As Integer)
eingabe = eingabe * 3
Print Using "Ergebnis = ###"; eingabe
End Sub
The called EXE file:
Code: (Select All)
'Berechnungen am rechtwinkligen Dreieck - 5. August 2023
'https://qb64phoenix.com/qb64wiki/index.php/HYPOT
Option _Explicit
Dim As Double ankathede, gegenkathede, hypotenuse
Dim As Double hoehe_c, flaecheninhalt, umfang
Locate 2, 3
Input "Laenge der Ankathede(cm) : ", ankathede
Locate 3, 3
Input "Laenge der Gegenkathede(cm): ", gegenkathede
hypotenuse = _Hypot(ankathede, gegenkathede)
Locate 5, 3
Print Using "Die laenge der Hypotenuse im Dreiceck betraegt: ###.## cm"; hypotenuse
'Hoehe hc und Flaecheninhalt im rechtwinkligen Dreieck
hoehe_c = ((ankathede * gegenkathede) / hypotenuse)
flaecheninhalt = ((hypotenuse * hoehe_c) / 2)
umfang = ankathede + gegenkathede + hypotenuse
Locate 7, 3
Print Using "Der Umfang dieses Dreiecks betraegt : ###.## cm"; umfang
Locate 8, 3
Print Using "Der Flaecheninhalt dieses Dreiecks betraegt : ###.## qcm"; flaecheninhalt
End
RE: Why do FOR/NEXT variables end up +1 more? - Kernelpanic - 08-26-2023
Deleted!
RE: Why do FOR/NEXT variables end up +1 more? - SMcNeill - 08-26-2023
The easiest way to exit ON a number is just with a simple DO loop.
start = 10
finish = 20
increment = +1
DO
'Whatever you want to repeat
start = start + increment
'Post increment work stuff, if desired
LOOP UNTIL start >= finish
RE: Why do FOR/NEXT variables end up +1 more? - Kernelpanic - 08-26-2023
(08-26-2023, 12:57 AM)SMcNeill Wrote: The easiest way to exit ON a number is just with a simple DO loop.
start = 10
finish = 20
increment = +1
DO
'Whatever you want to repeat
start = start + increment
'Post increment work stuff, if desired
LOOP UNTIL start >= finish Thanks! Is also a possibility - I had tried it with Sleep 10. But I didn't like it because the user should decide when to continue. Now I found it. This is how it works as desired:
Code: (Select All)
'Aus einer While-Schleife eine Sub-Prozedur aufrufen - 25./26. Aug. 2023
$Console:Only
Option _Explicit
Declare Sub Berechnen(eingabe As Integer)
Dim As Integer i, eingabe, modBedingung
Dim As String antwort
Print
Print "While-Schleife wird bis zur Eingabe durchlaufen, wobei"
Print "bei Mod 7 = 0 jedesmal eine Ausgabe erfolgt."
Print
Input "Eingabe : ", eingabe
Input "Modangabe: ", modBedingung
Print: Print
'While-Schleife wird bis zur Eingabe durchlaufen, wobei
'bei Mod 7 = 0 jedesmal eine Ausgabe erfolgt
'Ergaenst um Aufruf eines externen Programms, wenn Bedingung erfuellt
i = 1
While i < eingabe
i = i + 1
If i Mod modBedingung = 0 Then
Berechnen (i)
ElseIf i Mod 23 = 0 Then
Print
Input "Weiter J/N: ", antwort
If UCase$(antwort) = "J" Then
Run "D:\Lab\QuickBasic64\Finanz+Mathe\Geometrie\Rechtwinkliges-Dreieck-Hypo.exe"
Else
Exit While
End If
End If
Wend
End 'Hauptprogramm
Sub Berechnen (eingabe As Integer)
eingabe = eingabe * 3
Print Using "Ergebnis = ###"; eingabe
End Sub
RE: Why do FOR/NEXT variables end up +1 more? - Kernelpanic - 08-26-2023
An addition to make the output more understandable.
Code: (Select All)
While i < eingabe
i = i + 1
If i Mod modBedingung = 0 Then
Berechnen (i)
ElseIf i Mod 23 = 0 Then
Print
Print "Bricht bei Eingabe MOD 23 = 0 ab!"
Print
Input "Weiter J/N: ", antwort
If UCase$(antwort) = "J" Then
Run "D:\Lab\QuickBasic64\Finanz+Mathe\Geometrie\Rechtwinkliges-Dreieck-Hypo.exe"
Else
Exit While
End If
End If
Wend
|