C++ arrays



  • Hallo leute,

    ich steh vor einem großen Problem, wahrscheinlich eh nur grad auf der Leitung...

    Ich habe ein erstes Amateur Programm geschrieben, welches mir bei der Planung und Ausstattung einer virtuellen Modellbahnstrecke helfen soll. Es soll mir zb die Maximalgeschwindigkeit in einer Kurve berechnen sowie auch den Bremsweg ausgeben. Der Wert, den ich eingebe, ist zb. die Länge eines Streckenabschnittes.
    Klappt alles sehr gut, nun kommt aber die Herausforderung: Ich arbeite ja nicht immer nur für einen Abschnitt, sondern für mehrere Einzelabschnitte! Um das bewältigen zu können, ohne das Programm jedes Mal komplett neu starten zu müssen, habe ich eine Schleife um den Hauptcode gesetzt und diese mit der Frage ob ich eine neue Berechnung starten möchte oder nicht geschlossen. Nun möchte ich aber auch noch die Fahrtdauer von A nach B berechnen. Dafür brauche ich natürlich einige Einzelwerte resultierend aus den einzelnen Schleifendurchläufen, die wiederum alle separat abgespeichert werden sollen! Das Stichwort, das mir in den Sinn kam, war "Array"! Und genau daran scheitere ich trotz mehreren Suchdurchläufen auf den verschiedensten Seiten. Jedes Array muss ja durch einen constanten Wert definiert sein. Zb. int iAbschnittslaenge[30]; Jetzt ist es aber zugleich nach meinem Verständnis vonnöten den "konstanten" Wert ja abzuändern. Das heißt, dass der Arrayplatz, mit jedem Durchlauf des Speichervorgangs um 1 höher wird. Das nächste Problem ist, dass ich ja nicht wirklich schon im Vorhinein wissen kann, wie oft die Schleife durchlaufen wird und wieviele Einzelwerte folglich rauskommen sollen!

    Bitte um Hilfe! Ein Lösungsansatz sei im Folgenden gepostet:

    cout << "Moechten Sie eine neue Berechnung starten?";
    	cin >> bEntscheidung;
    
        if(bEntscheidung == 1)
            {
             cout << "Kurzen Moment, Ihre Werte werden gespeichert!" << endl;
    
      Sleep(1800);
    
      const int alzahl=30;
      const int vezahl=30;
      const int bwzahl=30;
    
      int iAbschnittslaenge[alzahl]; 
      double dGesamtVe[vezahl];
      double dBremswege[bwzahl];
    
      // Wenn Speicherplatz 1 nicht belegt, auf 1 speichern! Sonst auf 2++ speichern, dh alzahl, etc. soll sich bei jedem DUrchlauf des SPEICHERVORGANGES um 1 erhöhen!
    
      if(iLaengeZP1ZP2 != iAbschnittslaenge[1] && dMaxVe != dGesamtVe[1] && dBremsweg != dBremswege[1])
          {
    
      iLaengeZP1ZP2 = iAbschnittslaenge[1];
      dMaxVe = dGesamtVe[1];
      dBremsweg = dBremswege[1];
    
          }
    
     if(alzahl < 30)
         {
         iAbschnittslaenge[alzahl]=iLaengeZP1ZP2;
         alzahl++;
         }
    
            }
    	if(bEntscheidung == 0)
    		{
    		 cout << "Vielen Dank fuer die Nutzung von Train Project MP 1.0!" << endl << "Das Programm wird nun beendet!";
             system("PAUSE");
    		}
    
    	}
    
     cout << "Vielen Dank fuer die Nutzung von Train Project MP 1.0!" << endl << "Das Programm wird nun beendet!";
     system("PAUSE");
     return 0;
    }
    


  • Du kannst etwa mit

    int x; std::cout << "Größe:"; std::cin >> x;
    int (*arr) = new int[x];
    

    auch Array mit nicht-konstanter Größe anlegen. Desweiteren empfehle ich dir std::vector, eine Klasse aus der C++-Standardbibliothek die sich dynamisch vergrößern lässt:

    std::vector<int> v;
    int x;
    std::cout << "int wert: "; std::cin >> x;
    v.push_back(x); // v hat jetzt die größe 1
    


  • Danke für deine Antwort! Hilft mir schon sehr weiter! 🙂 Werde ich mir näher ansehen! LG


Anmelden zum Antworten