Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [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

Gemischrechner

Uploader:Mitgliedpinkpanther
Datum/Zeit:25.12.2005 02:58:23

'ACHTUNG: Dieses Programm wird kostenlos - so wie es ist - zur Verfügung gestellt.
'         Es wird keinerlei Gewährleistung dafür übernommen, dass das Programm
'         richtig funktioniert und richtige Werte errechnet. Die Verwendung des
'         Programms und der damit berechneten Ergebnisse erfolgt ausschließlich
'         auf eigene Gefahr!

DEFINT A-Z

DECLARE FUNCTION GetBaujahr% (GueltigVon, GueltigBis, Beispiel$)
DECLARE FUNCTION GetEmpfehlung% (TrabantTyp$, Baujahr, GemischVerhaeltnis$(), GemischInfoNr())
DECLARE FUNCTION GetEingabe% (TrabantTyp$, Baujahr)
DECLARE SUB GetGemischInfo ()
DECLARE SUB About ()
DECLARE SUB ShowEmpfehlung (GemischVerhaeltnis$(), GemischInfoNr())
DECLARE SUB ShowInfo (InfoNr)


'Der Gemischrechner
'ULTRA-Version
'by Marcel Kunzmann
'v.1.0.6 , 24.12.2005
'pinkpanther edition :-)


DIM SHARED GemischInfo$(1 TO 3, 1 TO 5)
DIM GemischVerhaeltnis$(1 TO 3), GemischInfoNr(1 TO 3)


'===========================================================


GetGemischInfo

COLOR 14, 9
CLS
About

IF GetEingabe%(TrabantTyp$, Baujahr) THEN
  IF GetEmpfehlung%(TrabantTyp$, Baujahr, GemischVerhaeltnis$(), GemischInfoNr()) THEN
    ShowEmpfehlung GemischVerhaeltnis$(), GemischInfoNr()
  END IF
ELSE
  PRINT
  COLOR 12
  PRINT "    Programm vorzeitig abgebrochen!"
END IF

END


'===========================================================



'Informationstexte zu den einzelnen Gemisch-Verhaeltnissen
'  Texte fuer
'    - gute Schmierung
'    - Schmierung lt. Werksempfehlung
'    - wenig Schmierung
'  Struktur:
'    DATA "Zeile 1-1"
'    DATA "Zeile 1-2"
'    ...
'    DATA "Zeile 1-5"
'    DATA *
'    ...
'    DATA "Zeile 2-1"
'    ...

  DATA "Bei diesem Verhaeltnis wird der Motor besser geoelt, was vor allem bei hohen"
  DATA "Geschwindigkeiten von Vorteil ist. Jedoch entstehen auch mehr Abgase, d.h."
  DATA "man benoetigt mehr Oel, und der Auspuff veroelt schneller."
  DATA *

  DATA "Dieses Verhaeltnis ist ein guter Kompromiss zwischen guter Schmierung und "
  DATA "oekonomischer Schmierung."
  DATA *

  DATA "Viele sagen, dass bei diesem Verhaeltnis zu wenig Schmierung besteht"
  DATA "und der Motor schneller verschleisst."
  DATA "Es entstehen jedoch auch weniger Abgase und Kosten."
  DATA *


'Datengrundlage fuer die Empfehlungen
'  Struktur:
'    DATA TYP1-1, TYP1-2, ..., TYP1-n, *
'    DATA BIS_INKLUSIVE_BAUJAHR-1
'    DATA GEMISCH_GUT, GEMISCH_WERK, GEMISCH_WENIG, INFOTEXT1, INFOTEXT2, INFOTEXT3
'    DATA BIS_INKLUSIVE_BAUJAHR-2
'    DATA GEMISCH_GUT, GEMISCH_WERK, GEMISCH_WENIG, INFOTEXT1, INFOTEXT2, INFOTEXT3
'    ...
'    DATA 0
'
'    DATA TYP2-1, ..., *
'    ...

  DATA 500, 600, *
  DATA 1963
  DATA "1:25", "1:25", "1:40", 1, 1, 3
  DATA 0

  DATA 601, *
  DATA 1979
  DATA "1:25", "1:33", "1:50", 1, 2, 3
  DATA 1990
  DATA "1:40", "1:50", "1:70", 1, 2, 3
  DATA 0

  DATA *

SUB About

  PRINT "  >>>> Der Gemischrechner ULTRA >>>>"
  PRINT "      by Marcel Kunzmann, 1.0.6 "
  PRINT "      pinkpanther edition :-)"
  PRINT
  PRINT

END SUB

FUNCTION GetBaujahr% (GueltigVon, GueltigBis, Beispiel$)

  DO
    PRINT "  Wann wurde Ihr Trabant gebaut (z.B. '" + Beispiel$ + "')? ";
    INPUT "", Baujahr$
    PRINT
    EingabeUngueltig = 0
    'zuerst auf gueltige Laenge der (String-)Eingabe pruefen,
    'da das Ergebnis der Umwandlung in eine Zahl nicht in eine
    'Integer-Variable passen koennte!
    SELECT CASE LEN(Baujahr$)
      CASE 4
        Baujahr = VAL(Baujahr$)
        SELECT CASE Baujahr
          CASE GueltigVon TO GueltigBis
          CASE ELSE
            COLOR 12, 9
            PRINT "    Das kann nicht sein!"
            COLOR 14, 9
            PRINT
            EingabeUngueltig = -1
        END SELECT
      CASE 0
        Baujahr = 0
      CASE ELSE
        COLOR 12, 9
        PRINT "    Geben Sie bitte eine 4-stellige Jahreszahl ein!"
        COLOR 14, 9
        PRINT
        EingabeUngueltig = -1
    END SELECT
  LOOP WHILE EingabeUngueltig
  GetBaujahr% = Baujahr

END FUNCTION

FUNCTION GetEingabe% (TrabantTyp$, Baujahr)

  DO
    PRINT "  Welchen Trabant-Typ benutzen Sie (500, 600, 601, 1.1)? ";
    INPUT "", TrabantTyp$
    PRINT
    EingabeUngueltig = 0
    SELECT CASE TrabantTyp$
      CASE "500", "600"
        Baujahr = GetBaujahr%(1957, 1963, "1959")
      CASE "601"
        Baujahr = GetBaujahr%(1964, 1990, "1986")
      CASE "1.1"
        PRINT "  Sie brauchen kein Gemisch! Tanken Sie Super-bleifrei!"
      CASE ""
      CASE ELSE
        COLOR 12, 9
        PRINT "    Ungueltiger Trabant-Typ!"
        COLOR 14, 9
        PRINT
        EingabeUngueltig = -1
    END SELECT
  LOOP WHILE EingabeUngueltig

  IF Baujahr THEN
    GetEingabe% = -1
  ELSE
    GetEingabe% = 0
  END IF

END FUNCTION

FUNCTION GetEmpfehlung% (TrabantTyp$, Baujahr, GemischVerhaeltnis$(), GemischInfoNr())

  DO
    READ Typ$
    IF Typ$ = "*" THEN
      EXIT DO
    ELSE
      DO
        SELECT CASE Typ$
          CASE TrabantTyp$, "*"

            EXIT DO
        END SELECT
        READ Typ$
      LOOP
      IF Typ$ = "*" THEN
        DO
          READ Dummy$
        LOOP UNTIL Dummy$ = "0"
      ELSE
        DO
          READ Dummy$
        LOOP UNTIL Dummy$ = "*"
        DO
          READ BisBauJahr
          IF BisBauJahr THEN
            FOR i = 1 TO 3
              READ GemischVerhaeltnis$(i)
            NEXT
            FOR i = 1 TO 3
              READ GemischInfoNr(i)
            NEXT
          ELSE
            EXIT DO
          END IF
          IF Baujahr <= BisBauJahr THEN
            EXIT DO
          END IF
        LOOP
        IF Baujahr <= BisBauJahr THEN
          EXIT DO
        END IF
      END IF
    END IF
  LOOP

  IF BisBauJahr THEN
    GetEmpfehlung% = -1
  ELSE
    GetEmpfehlung% = 0
  END IF

END FUNCTION

SUB GetGemischInfo

  FOR Kategorie = 1 TO 3
    FOR Zeile = 1 TO 5
      READ Zeile$
      IF Zeile$ = "*" THEN
        EXIT FOR
      ELSE
        GemischInfo$(Kategorie, Zeile) = Zeile$
      END IF
    NEXT
  NEXT

END SUB

SUB ShowEmpfehlung (GemischVerhaeltnis$(), GemischInfoNr())

  CLS
  SCREEN 12

  LINE (6, 170)-(600, 70), 14, B

  LOCATE 3, 3
  COLOR 9
  PRINT "EMPFEHLUNGEN"
  LOCATE 6, 4
  COLOR 2
  PRINT "Gute Schmierung"
  LOCATE 6, 34
  PRINT GemischVerhaeltnis$(1)
  LOCATE 8, 4
  COLOR 10
  PRINT "Werksempfehlung"
  LOCATE 8, 34
  PRINT GemischVerhaeltnis$(2)
  LOCATE 10, 4
  COLOR 12
  PRINT "Wenig Schmierung"
  LOCATE 10, 34
  PRINT GemischVerhaeltnis$(3)

  COLOR 2
  LOCATE 14, 4
  PRINT "Informationen "; GemischVerhaeltnis$(1)
  LOCATE 15, 2
  ShowInfo GemischInfoNr(1)

  COLOR 10
  LOCATE 20, 4
  PRINT "Informationen "; ; GemischVerhaeltnis$(2)
  LOCATE 21, 2
  ShowInfo GemischInfoNr(2)

  COLOR 12
  LOCATE 26, 4
  PRINT "Informationen "; GemischVerhaeltnis$(3)
  LOCATE 27, 2
  ShowInfo GemischInfoNr(3)

END SUB

SUB ShowInfo (InfoNr)

  FOR Zeile = 1 TO 3
    IF LEN(GemischInfo$(InfoNr, Zeile)) THEN
      PRINT GemischInfo$(InfoNr, Zeile)
    ELSE
      EXIT FOR
    END IF
  NEXT

END SUB