myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[C++] Struct

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 21.05.14, 11:29   #1
depream
Newbie
 
Registriert seit: Jan 2013
Beiträge: 64
Bedankt: 147
depream ist noch neu hier! | 0 Respekt Punkte
Standard [C++] Struct

Hi @ all,
habe ein Problem bei dem ich nicht weiterkomme um meine Übung zu absolvieren.
Aufgabe: Flugzeugbuchungssystem

Aufgabe:
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
(falls es sich jemand durchlesen möchte)

ich habe ein struct erstellt:
Code:
struct seat {
    string Name, Vorname;
    bool ist_belegt;
    int Sitz[0][0];
};

public: 
...

private:
vector<seat> seats;
anschließend im konstruktor die sitze iteriert und in einen vector gepackt:

Code:
<Flight.cpp>

int iReihe = 21;
int iSitzanzahl = 6;

Flight::Flight() {

    for(int i=0; i<iReihe; i++){
        new_seat.Sitz[i][0];
        for(int j=0; j<iSitzanzahl; j++){
            new_seat.Sitz[i][j];
            new_seat.ist_belegt=false;
            seats.push_back(new_seat);
        }
    }
}
so nun möchte ich "Show Bookings" als erstes erledigen:

nur ich weiß gerade nicht wie ich weitermachen soll. hänge gerade daran dass, das ganze folgendermaßen aussehen sollte:

1: frei frei frei besetz besetz frei
2: besetz frei frei besetz frei frei
...
22: besetz frei frei besetz frei frei

einen vector kann ich schließlich als eine liste sehen, natürlich kann ich diese liste mit einer for-schleife durch-iterieren bis seats.size().
aber wie genau kann ich sagen: das ist die Reihe zu den Reihen gehören diese Sitzplätze?
oder sollte ich mein programm komplett anderster gestalten, wenn ja, wie ungefähr.

Es handelt sich hier um keine Hausaufgabe oder ähnlichem sondern nur als Übung für die Klausur.

Danke im Voraus
depream ist offline   Mit Zitat antworten
Ungelesen 21.05.14, 14:01   #2
HappyMike34
Erfahrenes Mitglied
 
Registriert seit: Mar 2010
Beiträge: 676
Bedankt: 655
HappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt Punkte
Standard

auf einen Sitz i in der Reihe j kannst du zugreifen mit

Code:
new_seat[j * iSitzanzahl + i]
Die Indizes beginnen dabei bei 0!

Ich würde aus dem Struct eine Klasse machen mit einem Default Konstruktor:

Code:
class seat {
public:
    seat() : ist_belegt(false) {}

    string Name, Vorname;
    bool ist_belegt;
   //  int Sitz[0][0]; // was soll das?
};

public: 
...

private:
vector<seat> seats;
Jetzt kannst du es elegant schreiben:

Code:
<Flight.h>    // Header inkludieren nicht .cpp !

int iReihe = 21;
int iSitzanzahl = 6;

Flight::Flight() 
   : seats(iReihe * iSitzanzahl)  // alle Sitze mit default initialisieren
{
}


Flight::ausgeben()
{
   for(int reihe(0); reihe < iReihe; ++reihe) {
      std::out << std::endl << reihe + 1; 
      for(int sitz(0); sitz < iSitzanzahl; ++sitz) 
          std::out << seats[reihe * iSitzanzahl + sitz].ist_belegt ? " belegt" : "   frei"; // Tip: Strings gleich lang machen
   }
}
fertig.
__________________
my brain has two parts, the right and the left...on the left, there is nothing right...on the right, there is nothing left
HappyMike34 ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 Uhr.


Sitemap

().