myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [C++] Struct (https://mygully.com/showthread.php?t=3323029)

depream 21.05.14 11:29

[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 und freigeschaltete Mitglieder sichtbar. Jetzt 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 :T :T :T

HappyMike34 21.05.14 14:01

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.