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:

IF then frage

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



Anmeldungsdatum: 02.08.2008
Beiträge: 2

BeitragVerfasst am: 02.08.2008, 21:52    Titel: IF then frage Antworten mit Zitat

hi ich schriebe ein rechenen prog für die arbeit in qickbasic und habe nun folgendes prob:


ich habe die variabel I2# in eine if then prozedur gesetzt

und zwar damit die 0 vermieden werden kann.

also :


1 Input "I=" I2#
IF I2# = "0" THEn
Print "0 Ist nicht zu lässig wiederholen sie ihre Eingabe"
Goto 1
End If
....



Leider springt er wenn ich des testen will immer aus die zeile und gibt dann unverträgliche Daten Typen aus

wo liegt der fehler und ist möglich villeicht den befehl zu spezifiziern is Quickbasic?

Also ich dacht so if I2# ="<0" Then ....?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 02.08.2008, 21:58    Titel: Antworten mit Zitat

Hallo,

Sprungmarken sollte man grundsätzlich nicht verwenden, weil das Programm dadurch unübersichtlich wird. Besser wäre es so:
Code:
Dim i As Double

'...

Do
    Input "I=", i
    If i <= 0 Then
        Print "I muss gr”áer als 0 sein. Sie mssen Ihre Eingabe wiederholen."
    Else
        Exit Do
    End If
Loop

Print
Print Using "Es wurde Folgendes eingegeben:   I = ###.##### "; i
SLEEP
END

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 02.08.2008, 22:01    Titel: Antworten mit Zitat

Hallo Gismo!

Deutsch ist nicht deine Muttersprache, hm?

statt
Code:
IF I2# = "0" THEn

einfach
Code:
IF I2# = 0 THEn

verwenden.


Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lord_Gismo



Anmeldungsdatum: 02.08.2008
Beiträge: 2

BeitragVerfasst am: 02.08.2008, 23:15    Titel: Antworten mit Zitat

das mit den "" weg lassen hab ich schon versucht klappt net dann mekert er auch ich habe eigentlich das gefühl das die null ein wert ist mit dem basic net klar kommt denn bei den anderen zeilen funtioniert es ja





2 PRINT "Bitte W„hlen sie ein Katigorie:"
PRINT " (1) Widerstandsberechnung"
PRINT " (q) Exit"
REM Hier Gibt er den Oben Sthenden Taxt aus
INPUT "Ihre Wahl?", Wahl$
REM Hier wird die Variabel Wahl$(string) gesetzt
IF Wahl$ = "1" THEN
GOTO 1
END IF
IF Wahl$ = "q" THEN
END
END IF
1 CLS
PRINT "W„hlen Sie Eine Art der Wiederstandsberechnung"
PRINT "(1) Ohmsche's Gesetz"
PRINT "(q) Zurck"
INPUT "Ihre Wahl?", Wahl1$
IF Wahl1$ = "1" THEN
GOTO 21
END IF
IF Wahl1$ = "q" THEN
GOTO 2
END IF
21 CLS
PRINT "W„hlen Sie Aus was sie Berechnen Wollen"
PRINT " (1) R"
PRINT " (2) I"
PRINT " (3) U"
PRINT " (q) Zurck"

INPUT "Machen sie Ihre Auswahl:", Wahl2$
IF Wahl2$ = "1" THEN
GOTO 11
END IF
IF Wahl2$ = "2" THEN
GOTO 12
END IF
IF Wahl2$ = "3" THEN
GOTO 13
END IF
IF Wahl2$ = "q" THEN
GOTO 2
END IF
11 CLS
14 PRINT " Geben sie U in Volt ein"
INPUT "U=", U1#
IF U1# = "0" THEN
PRINT "0 ist keine gltige wahl bitte Wiederholen sie"
GOTO 14
END IF
15 PRINT "Geben sie I in mA ein"
INPUT "I=", I1#
IF I1# = "0" THEN
PRINT "0 ist keine gltige wahl bitte Wiederholen sie"
GOTO 15
END IF
mA# = .001
I12# = I1# * mA#
R1% = U1# / I12#
PRINT "R=", R1%
12 CLS
16 PRINT "Geben sie U in V ein"
INPUT "U=", U2#
IF U2# = "0" THEN
PRINT "0 ist keine gltige wahl bitte Wiederholen sie"
GOTO 16
END IF
17 PRINT " Bitte geben Sie R in Ohm ein"
INPUT "R=", R1%
IF R1% = "0" THEN
PRINT "0 ist keine gltige wahl bitte Wiederholen sie"
GOTO 17
END IF
I2# = U2# / R1%
I22# = I2# * .001
PRINT "I=", I22#
13 CLS
18 PRINT "Geben sie R in Ohm ein"
INPUT "R=", R3%
IF R3% = "0" THEN
PRINT "0 ist keine gltige wahl bitte Wiederholen sie"
GOTO 18
19 PRINT " Geben sie I in mA ein"
INPUT "I=", I3#
IF I3# = "0" THEN
PRINT "0 ist keine gltige wahl bitte Wiederholen sie"
GOTO 19
END IF
I31# = I2# * .001
U3# = I31# * R3%
PRINT "U3=", U3#
LOOP[/code]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 03.08.2008, 00:51    Titel: Antworten mit Zitat

Das Problem ist, dass I# und R% usw. Zahlen sind und "0" ein String. Das hat nichts mit dem Wert 0 zu tun. Bei den Anfragen am Anfang hattest du zwei Strings Wahl$ und "1", und das funktioniert - würde mit "0" genauso funktionieren.

Mag sein, dass INPUT immer einen String zurückgeben möchte. Eine Möglichkeit wäre noch, beim INPUT die Eingabevariable R$ zu verwenden und dann
Code:
R% = VAL(R$)

zu versuchen. Dann kannst du mit
Code:
IF R% = 0 THEN

deine Ueberpruefung machen. Ist zwar etwas umständlicher und vielleicht nicht die beste Umsetzung, sollte aber zumindest funktionieren.
(habe jetzt mal R% genommen, weil es mir als erstes ins Auge gesprungen ist)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. 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