Inkrementieren Problem



  • 
    #ifndef CPARKINGLOT_H_
    #define CPARKINGLOT_H_
    #include<string>
    #include<iostream>
    using namespace std;
    
    class CParkingLot{
    private:
    	int m_id;
    	int m_capacity;
    	int m_curOccupancy = 0;
    	void generateId();
    
    public:
    	CParkingLot(int capacity = 80);
    	int static id;
    
    	int getId();
    	int getCapacity();
    	void setCapacity(int capacity);
    	int getCurOccupancy();
    	void setCurOccupancy(int curOccupancy);
        bool parkVehicle();
    	int parkVehicles(int numVehicles);
    	int getFreeSpots();
    	void print();
    	friend ostream& operator<< (ostream& lop, const CParkingLot& rop);
    
    
    
    
    };
    ostream& operator<< (ostream& lop, const CParkingLot& rop);
    
    
    
    
    #endif /* CPARKINGLOT_H_ */
    
    

    ich wollte zuerst den Default Wert auf 0 setzen und hiernach erhöhen ,damit er bei 0 beginnt ?
    Einfach int id; schreiben ?

    Statt = 0?



  • Ok Leute ?



  • Ich zitiere mal deinen Eingangsbeitrag:
    @Master33 sagte in Inkrementieren Problem:

    Nutzen Sie hierfür eine lokale static-Variable innerhalb dieser Methode, die Sie nach jeder Zuweisung inkrementieren.

    Der Code dafür in deinem Eingangsbeitrag war also schon mal richtig. Per Default wird eine static-Variable immer mit 0 initialisiert (aber lesbarer ist es, diese Zuweisung explizit hinzuschreiben: static int id = 0;)

    Es fehlt nur noch das Inkrementieren dieser Variablen, damit bei jedem Aufruf eine neue Id zugewiesen wird!



  • Einfach als nächstes m_id = id;
    Oder wie ?
    Und das wars ?



  • @Master33 Du musst das einfach mal ausprobieren! Ich habe dir doch vor einigen Tagen ein Testprogramm geschrieben, wo dann 100, 101, ... rauskommen sollen. Jetzt musst du nur noch überlegen, wie du (wie in der Aufgabe gefordert) bei 100 statt bei 0 anfängst. Sollte nicht allzu schwierig sein. Danach überlegst du dir, wie du den Fehlerfall (id >= 1000) behandelst.



  • static int id = 100;

    m_id =id;

    Fertig?



  • Das hast du doch wieder nicht probiert.
    Jetzt fängst du immerhin bei 100 an, aber wie kommst du beim nächsten Aufruf auf 101? Und bei dem danach auf 102? Also, das Inkrementieren fehlt dabei.



  • 
    void CParkingLot::generateId(){
    
                   if ( m_id >= 100 && m_id <1000){
                	   int static id = 100;
    	                      m_id = id;
    	                      id++;
    	          }
                   else {
                	   int static id = 100;
                	   m_id = id;
    
                   }
    
    
    			}```
    
    Die else Methode habe ich dann so gemacht wie ich es für richtig gehalten habe?
    Es steht ja in der Aufgabe nicht was man stattdessem machen soll?
    
    return false;?


  • Dieser Beitrag wurde gelöscht!


  • passt es jetzt?



  • Nein! Hast du es mal ausprobiert? --> Ideone-Testcode

    Warum hast du zweimal die static-Variable definiert?

    --> Ideone-Code

    PS: Lernst du nur für dich C++ oder ist das Teil einer Ausbildung/Studium etc.?
    Mir scheint, dir fehlt es, die Bedeutung hinter den einzelnen Anweisungen zu verstehen.
    Verwendest du denn eine IDE (z.B. Visual Studio)? Dann solltest du lernen mit dem Debugger umzugehen, so daß du Zeile für Zeile durch den Code steppen (und dir die Variableninhalte ansehen) kannst.



  • Dir fehlt grundlegenstes Verständnis. Diese Aufgabe ist momentan viel zu komplex für dich. Falls es irgendwann durch Zufall funktionieren wird, wirst du nicht erklären können, warum. Du musst mal mindestens 2 Schritte zurückgehen und die absoluten Basics lernen.



  • habe nur ein Fach informatik .
    Arbeite mit eclipse.
    Meine IDE zeigt aktuell keine Fehler an ? hmmmm



  • @Master33 sagte in Inkrementieren Problem:

    Meine IDE zeigt aktuell keine Fehler an ?

    Fragst du uns das!? Du hast es doch geschafft, dass Th69 entnervt aufgegeben hat, dir etwas zu erklären und die Lösung gepostet hat.
    Was brauchst du denn jetzt noch?


Anmelden zum Antworten