Programmieren - alles kontrollieren 4.938 Themen, 20.666 Beiträge

Mal wieder: Problem mit BASIC! Logischer Fehler (vermutlich)

REALdeathmeat2k / 2 Antworten / Flachansicht Nickles

Ich hatte vor einiger Zeit schonmal gepostet!
Auch wegen Probs mit PowerBASIC!
Diese Probleme haben sich gelöst! Nochmal danke an die Leutz, die uns geholfen haben!
Jetzt haben wir ("wir" weil es ja ein Projekt ist... :P) mal wieder ein Problem!

Unser Programm besteht aus drei Teilen! Von Interesse ist momentan eigentlich nur Teil zwei, die anderen Teile laufen einwandfrei! Im zweiten Programmteil kann der Benutzer einen Darlehensbetrag, einen Zinssatz, einen Tilgungssatz und die Bankgebühren und anschließend noch einen Monat eingeben! Es soll der Aufwand, der durch die Zahlung von Zinsen und Tilgungen entstanden ist bis zum eingelesenen Monat berechnet werden und die Restschuld berechnet werden! Die hierfür verwendete Schleife läuft, allerdings scheint sich wohl ein logischer Fehler eingeschlichen zu haben! :(
Gibt man z.B. als Monat "341" ein, erhält man einen Aufwand von ca. 230000 €, richtig wäre aber ca. 294000 €!

Ich poste einfach mal den Code hier rein, vielleicht weiß einer von euch, worans liegt! *hoff* :P

Also, hier erstmal der eigentliche zweite Programmeil:

REM *** Unterprogramme: Zwischenstand ausgeben ***

SUB Eingabe2 (Darlehensbetrag, Zinssatz, Tilgungssatz, Gebuehren, Monat)
CLS
COLOR 4,0
LOCATE 1,30
PRINT"Zwischenstand berechnen"
LOCATE 2,30
PRINT"-----------------------"
COLOR 7,0
LOCATE 8,5
INPUT"Bitte geben Sie den Darlehensbetrag in Euro ein: ",Darlehensbetrag
LOCATE 8,61
PRINT"Euro"
LOCATE 10,5
INPUT"Bitte geben Sie den Zinssatz in Prozent ein: ",Zinssatz
LOCATE 10,54
PRINT"%"
LOCATE 12,5
INPUT"Bitte geben Sie den Tilgungssatz in Prozent ein: ",Tilgungssatz
LOCATE 12,58
PRINT"%"
LOCATE 14,5
INPUT"Bitte geben Sie die Bankgebhren ein: ",Gebuehren
IF Gebuehren LOCATE 14,50
PRINT"%"
ELSE
LOCATE 14,50
PRINT"Euro"
END IF

LOCATE 16,5
INPUT"Bitte geben Sie den aktuellen Monat an: ",Monat
END SUB

SUB Verarbeitung2 (Dar, Zin, Til, Geb, Mon, Rest, Gez, Bel)
X=Dar
Z=0
Bel=Dar*(Zin+Til)/100/12
DO
Z=Z+1
Y=Bel-(((X*Zin)/100)/12)
X=X-Y
LOOP UNTIL Z=Mon
DauJ=(Z/12)
IF Geb Geb=Geb*Dar
END IF

REM *** Irgendwas falsch ANFANG ***

Rest=Geb+Dar+((Zin*Dar)/100)*(DauJ-(Mon/12))-Dar
Gez=Geb+Dar+((Zin*Dar)/100)*DauJ-Rest-Dar

REM *** Irgendwas falsch ENDE ***

END SUB

SUB Ausgabe2 (NochZuZahlen, BereitsGezahlt, Monatsbelastung )
CALL Rechne
LOCATE 20,5
PRINT USING"Die monatliche Belastung betr„gt: ######.## Euro";Monatsbelastung
LOCATE 21,5
PRINT USING"Der aktuelle Aufwand betr„gt: ######.## Euro";BereitsGezahlt
LOCATE 22,5
PRINT USING"Die Restschuld betr„gt: ######.## Euro";NochZuZahlen
END SUB

Jetzt das Hauptmenü! Interessandt lediglich der Teil zu CASE 2:

REM *** Hauptprogramm ***

DO
91 CALL AUTHEN
CALL Tastendruck
CALL Menueaufbau
CALL HMFirst
COLOR 4,1
99 LOCATE 18,25
PRINT" Ihre Wahl: "
LOCATE 18,31
INPUT"Ihre Wahl: ",Auswahl
COLOR 4,0

SELECT CASE Auswahl
CASE 1
CALL Eingabe1 (Ein1, Ein2, Ein3, Ein4)
CALL Verarbeitung1 (Ein1, Ein2, Ein3, Ein4, Bel, DauJ, DauM, Ges)
CALL Ausgabe1 (Bel, DauJ, DauM, Ges)
CALL Tastendruck
CALL Menueaufbau
GOTO 99
CASE 2
CALl Eingabe2 (Ein1, Ein2, Ein3, Ein4, Ein5)
CALL Verarbeitung2 (Ein1, Ein2, Ein3, Ein4, Ein5, Rest, Gezahlt, Belastung)
CALL Ausgabe2 (Rest, Gezahlt, Belastung)
CALL Tastendruck
CALL Menueaufbau
GOTO 99
CASE 3
CALL Eingabe3 (Ein1, Ein2, Ein3, Ein4)
CALL Verarbeitung3 (Ein1, Ein2, Ein3, Ein4 )
CALL Menueaufbau
GOTO 99
CASE 4
CALL ChangeUser
CASE 5
CALL Beenden
CASE ELSE
CALL WrongChoice
GOTO 99
END SELECT

LOOP UNTIL Auswahl=5

So, einige Umlaute hat der Windowseditor "umgestaltet" aber das sollte ja kein Prob sein! Wie gesagt: Unserer Meinung nach isses irgendwo ein logischer Fehler!

Könnt ihr uns helfen?

cya

-.- DeAtHmEaT 2k -.-

bei Antwort benachrichtigen