Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

Formelrechner Elektrotechnik

Uploader:AdministratorSebastian
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