wert länger speichern



  • Hallo,

    das untere Beispiel soll versuchen zu illustrieren, welches Problem ich lösen möchte (muss):

    {
      int a=0;
      int b=0;
      for (int j=0;j<2;j++) {
      std::cout <<"Gib  a ein: "<<std::endl;
      std::cin >> a;
    
      if (a==0){
    
        std::cout <<"Gib b ein: "<<std::endl;
        std::cin >> b;
    
      }
    
      else if (a==1){
    
        std::cout << "b ist: " << b <<std::endl;
      }
    

    d.h. wenn ich im ersten Loop "b=5" setzte und im zweiten dann "a=1", dann zeigt die Ausgabe b=5, da ja "b" seinen Wert nicht verändert.
    Das Problem ist, wenn ich die Funktion neu ausführe, dann ist "b" wieder 0, was verständlich ist, da "b" ja am Anfang auf Null gesetzt wurde.
    Meine Frage: Ist es überhaupt möglich "b" so zwischenzuspeichern, dass es beim nächsten Funktionsaufruf den letzten Wert (also in diesem Fall 5) angibt? Oder muss man es anders initialisieren?

    Vielen Dank,
    Gordon

    //Edit: Code Tags hinzugefügt



  • Beendest du das Programm und lässt es dann wieder laufen?

    Wenn ja musst du den Wert irgendwo auf der Festplatte speicher, z.B. in einer Txt-Datei. Nachdem du dein Programm schließt wird alles von deinem Programm aus dem RAM gelöscht.



  • {
    int a=0;
    static int b=0; // Hier ein static, dabei bleibt dann b über die Funktionsaufrufe erhalten
    for (int j=0;j<2;j++) {
      std::cout <<"Gib a ein: "<<std::endl;
      std::cin >> a;
    
      if (a==0){
    
        std::cout <<"Gib b ein: "<<std::endl;
        std::cin >> b;
    
      }
    
      else if (a==1){
    
        std::cout << "b ist: " << b <<std::endl;
    }
    


  • oder gleich OO-orientiert:

    class Kl
    {
        public:
            Kl() : a(0), b(0) {}
            void bla();
        private:
            int a;
            int b;
    };
    void Kl::bla()
    {
    for (int j=0;j<2;j++) {
      std::cout <<"Gib a ein: "<<std::endl;
      std::cin >> a;
    
      if (a==0){
    
        std::cout <<"Gib b ein: "<<std::endl;
        std::cin >> b;
    
      }
    
      else if (a==1){
    
        std::cout << "b ist: " << b <<std::endl; 
    }
    
    int main()
    {
        Kl kl();
        kl.bla();
    }
    

    mfg



  • Hallo,

    danke erst mal für die Antworten.
    Genau ich beende das Programm und lasse es dann wieder laufen.
    Mit der "static" Variable lässt sich das Problem leider nicht lösen.
    Ich glaube sinnvoll wäre es, die Variablen wirklich in ein Textfile zu schreiben um sie dann wieder einzulesen.
    Ich hoffe mal, das klappt so wie ich mir das vorstelle....;-)

    Grüße,
    Gordon



  • grobian schrieb:

    Hallo,

    danke erst mal für die Antworten.
    Genau ich beende das Programm und lasse es dann wieder laufen.
    Mit der "static" Variable lässt sich das Problem leider nicht lösen.
    Ich glaube sinnvoll wäre es, die Variablen wirklich in ein Textfile zu schreiben um sie dann wieder einzulesen.
    Ich hoffe mal, das klappt so wie ich mir das vorstelle....;-)

    Grüße,
    Gordon

    Solche Fragen werden in letzter Zeit irgendwie gehäuft gestellt?! Irgendwie absurd! Selbst wenn man kaum Ahnung hat was man tut weiß man in der Regel dass ein Programm im RAM läuft der für jeden Prozess neu vergeben wird ... wenn das Programm neu gestartet wird geht auch der Speicherbereich verloren. Ganz zu schweigen von dem was passiert, wenn man herunterfährt ... 🙄 🙄



  • double *T schrieb:

    oder gleich OO-orientiert:

    Meinst wohl O-orientiert



  • Hallo Die3?

    solche Fragen werden deshalb immer gestellt, weil eben nicht alle so schlau sind wie du!

    Grüße,
    Gordon


Anmelden zum Antworten