naja ein wircklich kleine problem Ein ganz ganz kleines Problem!! Bitte help :)

Cell-oe

Grünschnabel
Also ich bin recht neue hier bis jetzt haben alles aus Tutorials und Forums lernen und nach lesen können hier, aber jetzt brach ich echt mal persönliche Hilfe ich hoffe ihr könnt mir kleine c++ Anfänger wie ich es bin nen bissel weiter helfen
ich schreib ein Programm was die Anzahl der Jahre errechnet, wie man warten muss, bis man aufgrund einer einmaligen Einlage und eines konstanten Zinssatzes Millionär geworden ist.
Is ne kleine Hausaufgabe :) ich hab-the ja schon fast fertig ich poste erst mal den c++ Code bis ich zu mein kleines problemchen komme

Code:
// ------------------------------ Augbae 19 MILLION:CPP ------------------------------------

#include <conio>
#include <iomanip>
#include <iostream>
using namespace std; // Damit wird festgelegt Die gesamte Standardbibliothek von C++ benutzt diesen Namensraum
// -----------------------------------------------------------------------------------------


double      a;// Anlage
double      b;// Zinssatz
int         c;// Jahre 
double      d;// Zinsen
int        zw;// Die zwischen auswahl Ja-nein  

// -------------------------------- Eingabe -------------------------------------------------

int main()
{

   cout << fixed << setprecision(2);
   cout << "\n--- Aufgabe 19 ---";
   cout << "\n-----von xxxxxx------";
    do // das "do" müss ihr oben stehen sonnst wess er nicht wo erneut an fangen soll
     {
   cout << "\n\n\n-------------------------------------------------------------------";
   cout << "\nBitte geben Sie Ihre Anlage ein (in Euro)  : ";
   cin  >> a;
 
   cout << "\nBitte geben Sie Ihren Jahreszinsen ein (in %)  : ";
   cin  >> b;
   cout << "-------------------------------------------------------------------";

// ------------------------------------- Verarbeitung ----------------------------------------
                           // (ein Bedingugsausdruck)sieh unten die zeichen **xxx**// 
   
   while (a<= 100000) // while steh hier für **wenn 100000 errecht sind** nicht weiter rechnnen 
   {
       d= a *b / 100;
       a = a+ d;       
       c++;       
   }
   cout << "\n\n\nEs würde " << c << " Jahre dauern bis Sie eine Million Euro zusammen hätten";
   cout << "\n===================================================================";
   cout << "\nMoechten sie noch etwas Neues berechnen?(1=Ja, 2=nein)\n";
   cout << "\nIhre Auswahl:";
   cin >> zw;
    }
   while(zw==1);           //while( d==1); steht für vergleicht etwas, während = einen Wert zuweist 
   
   

return 0;
}


Also mein Problem ist es wenn ich die das Programm starte is ja alles ok so ich gib meine eingaben Anlage x ein und meine Jahreszinsen y ein so rechnet auch fein alles aus so jetzt kommt ja die frage „Moechten sie noch etwas Neues berechnen?(1=Ja, 2=nein)“ und da is der Wurm jetzt drin ich drück 1 für ja und geben meine Anlage x und Jahreszinsen y wieder ein so jetzt rechnet er aber falsch oder rechnet die wert weiter die ich vorher eingeben hab
z.b :
Bitte geben Sie Ihre Anlage ein (in Euro) „ich drück „ 1 „für ein Euro „
und dann kommt ja
Bitte geben Sie Ihren Jahreszinsen ein (in %) „ich drück auch wieder die“ 1 „rein „
Und wat sag er uns
Es würde 1158 Jahre dauern bis Sie eine Million Euro zusammen hätten
Bis dann hin alles ok alle supy
so jetzt kommt ja die abfrage Moechten sie noch etwas Neues berechnen?(1=Ja, 2=nein)
ich so natürlich drück 1 gib alles wieder ein Anlage 1 € Jahreszinsen 1% und jetzt komms jetzt sag er mir auf einmal keine 1158 jähre mehr sondern 2316 jähre äääähhh alles klar!! da is was faul!!
Ja ich wesss ich könnt das auch mit der zwischen abfrage Moechten sie noch etw….. weg lassen und das Programm jedes Mal neu starten aber da bei hab ich ja nicht gelernt oder wie gesagt ich hab das Programm schon fertig nur das kleeeeine Problemchen wurmt mich noch .
Also wer mir helfen kann bin ich zu großen Dank verpflichtet
oder mir noch ein paar Tipps geben kann wie ich das und das verbessern kann immer her da mit.

LG euer Stievie =cell-oe
 
Hi.

Du solltest versuchen globale Variablen zu vermeiden. Grundsätzlich solltest du Variablen nur da definieren wo du sie auch brauchst. In dem Fall z.B. innerhalb der main Funktion.

Das Problem liegt hier aber darin, dass du die Variablen gar nicht initialisierst?! Beim ersten Durchlauf hast du nur Glück das bei einem neu gestarteten Programm alles mit 0 initialisiert ist. Insbesondere müssen die Variablen c und d in jedem Schleifendurchlauf neu initialisiert werden (sonst haben sie noch die alten Werte...).

Regel Nr. 1: Variablen bei der Definition immer initialisieren! (außer wenn du den Wert der Variablen sofort überschreibst...)

C++:
  do // das "do" müss ihr oben stehen sonnst wess er nicht wo erneut an fangen soll
    {
      int       c = 0;// Jahre
      double    d = 0.0;// Zinsen
Gruß
 
Mensch danke die deepthroat hat alles geklappt
Ich hab das jetzt so gemacht wie du es gesagt hast mit globale Variablen und lokale Variablen sieht dann wie folgt so aus

Code:
// ------------------------------ Augbae 19 MILLION:CPP ------------------------------------

#include <conio>
#include <iomanip>
#include <iostream>
using namespace std; // Damit wird festgelegt Die gesamte Standardbibliothek von C++ benutzt diesen Namensraum
// -----------------------------------------------------------------------------------------
   //----------------------------------globale Variablen ---------------------------
   
   int  zw=0;  // Die zwischen auswahl Ja-nein    
   
  
   //-------------------------------  globale Variablen ENDE-----------------------

// -------------------------------- Eingabe -------------------------------------------------

int main()
{

   cout << fixed << setprecision(2);
    cout << "\n--- Aufgabe 19 ---";
   cout << "\n-----von xxxxxx------";
   
   
   do // das "do" müss ihr oben stehen sonnst wess er nicht wo erneut an fangen soll und er die lokale Variablen neu initialisiert
     {
 //------------------- lokale  Variablen ---------------------
  double      a=0.0;    // Anlage
  double      b=0.0;    // Zinssatz
  int         c = 0;    // Jahre
  double      d = 0.0;  // Zinsen 
  //------------------- lokale  Variablen ENDE---------------
   
    
   cout << "\n\n\n-------------------------------------------------------------------";
   cout << "\nBitte geben Sie Ihre Anlage ein (in Euro)  : ";
   cin  >> a;
 
   cout << "\nBitte geben Sie Ihren Jahreszinsen ein (in %)  : ";
   cin  >> b;
   cout << "-------------------------------------------------------------------";

// ------------------------------------- Verarbeitung ----------------------------------------
                           // (ein Bedingugsausdruck)sieh unten die zeichen **xxx**// 
   
   while (a<= 100000) // while steh hier für **wenn 100000 errecht sind** nicht weiter rechnnen 
   {
       d= a *b / 100;
       a = a+ d;       
       c++;       
   }
   cout << "\n\n\nEs würde " << c << " Jahre dauern bis Sie eine Million Euro zusammen hätten";
   cout << "\n===================================================================";
   cout << "\nMoechten sie noch etwas Neues berechnen?(1=Ja, 2=nein)\n";
   cout << "\nIhre Auswahl:";
   cin >> zw;
    }
   while(zw==1);           //while( d==1); steht für vergleicht etwas, während = einen Wert zuweist 
   
   

return 0;
}

Danke dir noch mal für den Tipp mit den globale Variablen zu vermeiden .
thx dir ganz herzlich.

PS:hast für mich noch so ein paar Tipps
 
Zurück