fb:porticula NoPaste
Formelrechner Elektrotechnik
Uploader: | Sebastian |
Datum/Zeit: | 03.01.2013 22:19:11 |
' Code-Beilage zu Forenthread:
' http://forum.qbasic.at/viewtopic.php?t=8048
'
' Getestet mit FreeBASIC 0.24.0 unter Windows 7 x64
'
' Datum: 03.01.2013, Lizenz: FBPSL
'
' Keine Garantie fuer die inhaltliche und technische Richtigkeit des
' Rechners und fuer die Korrektheit der verwendeten Formeln.
'
' !!! Verwendung ausschliesslich auf eigene Gefahr !!!
'
' Arbeiten an elektrischen Anlagen duerfen nur durch qualifiziertes
' Fachpersonal im Rahmen der gesetzlichen Regelungen durchgefuehrt
' werden. Dieses Rechnerprogramm ist ein Beispiel-Code zum Lernen
' der Programmiersprache FreeBASIC. Es ist nicht fuer den Echt-Einsatz
' in baulichen und/oder elektrotechnischen Vorhaben gedacht und sollte
' nicht als Grundlage fuer Aufbauten/Versuche/Anlagen/... verwendet
' werden.
#include "vbcompat.bi"
Const NICHT_ANGEGEBEN = -1
Declare Function WertAnzeige (ByVal Wert As Single) As String
Declare Function WertEingabe (ByVal Buchstabe As String) As Single
Declare Sub VervollstaendigenWennMoeglich (ByRef U As Single, ByRef I As Single, ByRef R As Single, ByRef P As Single)
Dim As Single U=NICHT_ANGEGEBEN, I=NICHT_ANGEGEBEN, _
R=NICHT_ANGEGEBEN, P=NICHT_ANGEGEBEN
Dim As String Taste
Do
Cls
Print
Print " Formelrechner Elektrotechnik"
Print
Print " Wertetabelle:"
Print
Print " FormelZ Bezeichnung Ist-Wert"
Print " ===================================="
Print " U Spannung "; WertAnzeige(U)
Print " I Strom "; WertAnzeige(I)
Print " R Widerstand "; WertAnzeige(R)
Print " P Leistung "; WertAnzeige(P)
Print
Print " Welcher Variable moechten Sie nun einen Wert zuweisen? Druecken Sie entweder"
Print " U, I, R oder P zum Starten der Zuweisung oder ESC zum Beenden des Programms."
Print
Print " Ihre Auswahl: ";
Taste = Input(1)
If (Taste = Chr(27)) Then 'ESC
End
Else
Print Taste ' Konsolenecho
Print
Select Case UCase(Taste)
Case "U"
U = WertEingabe("U")
If (U > 0) Then VervollstaendigenWennMoeglich(U,I,R,P)
' Eingaben kleiner/gleich 0 setzen die Variable auf "nicht
' angegeben" zurueck. Dann nichts weiter vervollstaendigen.
Case "I"
I = WertEingabe("I")
If (I > 0) Then VervollstaendigenWennMoeglich(U,I,R,P)
Case "R"
R = WertEingabe("R")
If (R > 0) Then VervollstaendigenWennMoeglich(U,I,R,P)
Case "P"
P = WertEingabe("P")
If (P > 0) Then
R = NICHT_ANGEGEBEN
VervollstaendigenWennMoeglich(U,I,R,P)
End If
Case Else
Beep
Continue Do
End Select
End If
Loop
End
Function WertAnzeige (ByVal Wert As Single) As String
If (Wert < 0) Then
Return "???"
Else
Return Format(Wert, "0.00")
End If
End Function
Function WertEingabe (ByVal Buchstabe As String) As Single
Dim As Single temp
Print " Neuer Wert fuer "; Buchstabe; " ("; STR(NICHT_ANGEGEBEN); " = keiner)? "; Buchstabe; " := ";
Input "", temp
If (temp < 0) Then temp = NICHT_ANGEGEBEN
Return temp
End Function
Sub VervollstaendigenWennMoeglich (ByRef U As Single, ByRef I As Single, ByRef R As Single, ByRef P As Single)
If (U > 0) And (I > 0) Then
R = U/I
P = U*I
End If
If (I > 0) And (R > 0) Then
U = R*I
End If
If (R > 0) And (U > 0) Then
I = U/R
P = (U^2)/R
End if
If (P > 0) And (I > 0) Then
U = P/I
End If
If (P > 0) And (U > 0) Then
I = P/U
R = (U^2)/P
End if
End Sub