CKonto - Funktioniert nicht wie ich mir das vorstelle: Entweder 0 Ausgabe oder Run time Error
-
0+0+0+0=0
Ich frag mich wo du ein Problem hast...
-
gnihihi schrieb:
0+0+0+0=0
Ich frag mich wo du ein Problem hast...Ich möchte ja die Werte per Tastatur einlesen und nicht per konstanten Wert im Quellcode einlesen....
-
Dann frag sie auch zuerst ab bevor du sie zusammenaddierst
Oder versteh ich dein Problem nicht?
-
gnihihi schrieb:
Dann frag sie auch zuerst ab bevor du sie zusammenaddierst
Oder versteh ich dein Problem nicht?Wie meinst Du das mit abfragen?
Kannst Du es vielleicht per Beispiel zeigen?
Edit:
Ich frage sie ja eigentlich schon ab...
Schaue in den Zeilen 213 bis 248
-
Du erstellst 4 Variablen weist ihnen den Wert0 zu und addierst das ganze
Bin Grad Net an meinem Rechner kann kein Beispiel machenPs: Tastatur Grad unter allersau
-
class Auszahlungen:public Stand
Auszahlungen erbt von Stand. Meinst du Kontostand?
Wenn ja, was hat Auszahlungen damit zu tun?
Irgendwie verstehe ich nicht, was du dir dabei gedacht hast...
-
Nathan schrieb:
class Auszahlungen:public Stand
Auszahlungen erbt von Stand. Meinst du Kontostand?
Ja meinte ich...
Nathan schrieb:
Wenn ja, was hat Auszahlungen damit zu tun?
Irgendwie verstehe ich nicht, was du dir dabei gedacht hast...Ich wollte, dass es den Kontostand, den ich per Tastatur eingelesen habe, erbt...
-
Äh, moment: Gehst du davon aus, dass sich alles auf das gleiche Objekt bezieht?!
Sprich, wenn du ein Kontostand Objekt bearbeitest, dass dann alle, die davon geerbt haben, davon wissen?
-
soh, endlich an meinem heißgeliebten Rechner.
case 1: { cout << "Wie hoch waren die Mieteinnahmen?\n"; double Mieteinnahmen; cin >> Mieteinnahmen; }
Was stellst du dir da vor?
Ich glaube du machst nen großen Denkfehler.In der Bedingung erstellst du ne Variable vom Typ double, namens "Mieteinnahmen" wo du deinen heißgeliebten Wert eingibst (das gleiche gilt auch für die anderen Bedingungen). Was du hierzu wissen musst, ist, sobald der Block ( {} ) verlassen wird, ist deine angelegte Variable außerhalb seines Gültigkeitsbereich und somit kannst du nicht mehr darauf zugreifen.
Ein paar Zeilen drunter erstellst du nochmal die Variable "Mieteinnahmen" (und drei weitere Variablen) die du auf 0.0 initialisierst und diese Variablen dann zusammenaddierst. Und nun nochmal: Was stellst du dir dabei vor? Glaubst du etwa, dass er wieder den alten (von vorhin eingegebenen Wert) enthält? Wenn du das wirklich denkst, dann tu dir ernsthaft selbst einen Gefallen, und lerne die Grundlagen nochmal vernünftig durch
Wenn du willst, dass deine Variablen den eingegebenen Wert enthalten gehst du folgendermaßen vor:int main() { .... /*** knalle die variablen erstmals in den korrekten gültigkeitsbereich....***/ double Mieteinnahmen=0.0; double Vermögenswirksamen_Leistungen=0.0; double Bareinzahlungen=0.0; double Dividenden_aus_Aktienpakete=0.0; if ("Ja") { ... switch(number) { case 1: { cout << "Wie hoch waren die Mieteinnahmen?\n"; // double Mieteinnahmen; <======== das hier lässt du komplett weg. die variablen wurden ja schließlich oben schon erstellt. cin >> Mieteinnahmen; // <===== hier verpasst du deiner variable nun den heißgeliebten wert. } ... /*** zum platzsparen hab ich die anderen bedingungen mal weggelassen, es ist aber das gleiche prinzip ***/ } } ... /*** _NUN_ kannst du die eingegebenen werte zusammenaddieren ***/ double Einzahlungen_gesamt = Mieteinnahmen + Vermögenswirksamen_Leistungen + Bareinzahlungen + Dividenden_aus_Aktienpakete; .... /*** und hier gehts dann weiter... ***/ return 0; }
Und noch ne kleine Abschweifung vom Thema: Deine main-Funktion (ich hab jetzt nur die main überflogen) ist eine Code-Suppe. Zur Verbesserung geb ich dir ein Stichwort mit auf den Weg: Funktionen. Vernachlässige sie nicht.
have a nice day.
ich bin müd.Gute Nacht! *mit Küsschen um sich werf*
-
gnihihihihi schrieb:
have a nice day.
ich bin müd.Um 03:10 Uhr nachts an einem Sonntag?
-
gnuhuhuhu schrieb:
gnihihihihi schrieb:
have a nice day.
ich bin müd.Um 03:10 Uhr nachts an einem Sonntag?
Ich glaub wir sind Montag
Bin immer noch müd
-
@gnihihihihi:
Wenn ich das so mache, wie Du vorgeschlagen hast, dann bekomme ich einen Linkerfehler...
LINK: fatal error LNK1168: "...- Klasse Konto.exe" kann nicht zum Schreiben geöffnet werden.
Gruß
Max
-
Gehe mal in den Taskmgr und beende den Prozess deiner *.exe
-
Nathan schrieb:
Gehe mal in den Taskmgr und beende den Prozess deiner *.exe
Punkt 1:
Warum denn??
Punkt 2:
Wie kommt man unter Windows 7 gleich wieder in den Taskmanger?
-
Weil der offenbar noch aktiv ist und dir Schreibrechte entzieht. Kenn ich.
strg + alt + entf
-
Nathan schrieb:
Weil der offenbar noch aktiv ist und dir Schreibrechte entzieht. Kenn ich.
strg + alt + entfDirekt in den Task-Manager kommt man mit Strg+Shift+Esc
-
Strg + Shift + Esc Herr Nathan ...
-
Tschuldigung, hab Windows xp.
Und auf dem Windows 7 Rechner mache ich Rechtsklick auf Taskleiste.
-
Nathan schrieb:
Tschuldigung, hab Windows xp.
Und auf dem Windows 7 Rechner mache ich Rechtsklick auf Taskleiste.
Brauchst Dich doch nicht entschuldigen ... bei mir hat es geklappt.
Ich habe alles, was mit meinem Compiler zu tun gehabt hat, beendet.
Nun meckert mein Compiler an einer neuen Stelle rum:
Nämlich mosert er an, dass
Einzahlungen_gesamt
nicht initialisiert ist, obwohl ich es ausgebessert habe...Edit:
Außerdem überspringt mein Compiler die Eingabeoption
Dividenden aus Aktienpaketen
Edit²:
Ich werde später den Code, um den es mir geht, posten. Nur muss ich jetzt was erledigen, das wahrscheinlich bis 18 Uhr dauert. Also bis später.
-
Nachdem Du bis 18 Uhr Dein Ding erledigt hast, erledige zuerst noch folgendes:
Wenn dein Compiler Dir vorwirft, dass du deine Variable nicht initialisiert hast, dann ist das auch so. Und wenn du auf die Warnung doppelklicken würdest, zeigt der Dir auch direkt die Stelle im Code.
Also was tun? Die Variable mit Standardwert füllen.Das mit den übersprungenen Eingaben kuck ich mir jetzt direkt mal an.
*zurückblätter*