Stack Overflow mit struct



  • Ich hatte die Idee das Programm für einen Zeitraum für 5 jahre zu implementieren. Und ich hatte keine bessere Idee das umzusetzen. Gibts denn einen vordefinierten Typ oder ähnliches um das ganze Platzsparender zu machen?

    Ich will einem bestimmten Flugzeug von den 10 genau ein Datum zuweisen wo der Kundenname, die Anzhl der Gäste und Reservierungsnummer drinstehen.

    Ich hatte am Anfang per struct mal ein Datum kreiert konnte damit aber nicht eindeutig die Daten zuordnen.



  • ^^ benutze für sowas ein DBMS, z.b. mySQL, berkeley-db oder was ähnliches.
    🙂



  • resis schrieb:

    Ich hatte die Idee das Programm für einen Zeitraum für 5 jahre zu implementieren. Und ich hatte keine bessere Idee das umzusetzen. Gibts denn einen vordefinierten Typ oder ähnliches um das ganze Platzsparender zu machen?

    Ich will einem bestimmten Flugzeug von den 10 genau ein Datum zuweisen wo der Kundenname, die Anzhl der Gäste und Reservierungsnummer drinstehen.

    Ich hatte am Anfang per struct mal ein Datum kreiert konnte damit aber nicht eindeutig die Daten zuordnen.

    Ich würde einen Datumstypen benutzen und den in die Reservierung mit hinein packen.

    struct data
    {
        int year;
        int month;
        int day;
        //haben die Reservierungen keine Uhrzeit?
    }
    

    Oder alternativ vielleicht tm aus der time.h.
    Und dann vielleicht nur Reservierungen für Tage anlegen, wo auch wirklich welche benötigt werden.



  • jo...die Idee hatte ich auch schon, aber es sollen alle Tage benutzt werden und ich kann somit keine Tage ausschließen.

    struct d_Datum
    {
    	short Jahr;
    	short Monat;
    	short Tag;
    	short Stunde[12]; //Buchung soll von 08:00 bis 20:00 möglich sein
    };
    
    struct d_Reservation
    {
    	int ResNr;
    	short Anzahl;
    	char Kunde[20];
    	d_datum Datum;
    };
    
    struct d_Flugzeug
    {
    	short Typ;
    	char Name[10];
    	short Passagiere;
    	d_Reservation Vermietung;
    };
    

    Das Problem hier ist, dass ich die Buchung nicht eindeutig zuordnen kann. Das ist ja mein Hauptproblem! Oder liegt hier mein Denkfehler?

    Danke noch mal für eure Hilfen.



  • Das kann man mit einer Suche lösen, mit der man nach bestimmten Daten/Uhrzeiten oder auch anderen Kriterien suchen kann.



  • Aber ist es jetzt nicht so, dass ich nur einen Termin pro Flugzeug speichern kann?



  • resis schrieb:

    short Stunde[12]; //Buchung soll von 08:00 bis 20:00 möglich sein
    

    wtf? bitte erklär mal mit deinen eigenen worten, was diese zeile bewirken soll.
    weißt du was arrays sind?



  • Hallo resis,

    wie eigentlich schon "ansiC bad ass" geschrieben hat, verwendet man für
    solche Sachen eher eine Datenbank.

    Wenn du es aber trotzdem so machen möchtest, kannst du mit malloc()
    Speicher auf dem Heap anlegen, welcher im Wesentlichen durch deinen
    Hauptspeicher begrenzt wird. (dies hat dir schon MFK geschrieben)

    resis schrieb:

    Dann deklariere ich ein Array:

    d_Flugzeug Flugzeug[10];
    

    Verwende an Stelle von s.o. folgendes:

    int main(void) {
        d_Flugzeug *Flugzeug = malloc(10*sizeof(d_Flugzeug));
    
        ...
    
        free(Flugzeug);
    }
    

    Gruß mcr



  • @dr. strange
    Ich habe da ein Array genommen, weil ja das Flugzeug nicht den ganzen Tag gebucht werden muss, sondern auch nur für eine Stunde. daher wollte ich in diesem Array hinterlegen, ob es frei oder bereits belegt ist für einen eingegebenen Zeitraum.

    Also sprich ne 0 heißt frei und ne 1 heißt belegt. Das war so mein Gedanke.

    @mcr
    hab mich die ganze Zeit über malloc belesen..also habs nicht vergessen 😃
    Werde das mal so probieren. Danke auf jeden Fall!



  • resis schrieb:

    Aber ist es jetzt nicht so, dass ich nur einen Termin pro Flugzeug speichern kann?

    Weiss ich nicht. Mir ist schließlich nicht klar, was Du schlussendlich willst.
    Ich kann es nur mutmaßen:
    Du willst eine Art Reservierungssystem für Flugtickets aufbauen.
    Ich weiss natürlich nicht, was für Flugzeuge das sein sollen, aber in der Regel kann da mehr als eine Person pro Flug teilnehmen.

    Vielleicht so:

    typedef enum
    {
        jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec
    }month_t;
    
    typedef unsigned int time_number_t;
    
    typedef struct date_t
    {
        time_number_t  year;
        month_t        month;
        time_number_t  day;
    };
    
    typedef struct time_t
    {
        time_number_t  hour;
        time_number_t  minute;
    };
    
    typedef char name_t[50];
    
    typedef struct reservierung_t
    {
        unsigned int  reservation_nr;
        date_t        embarkation_day;
        time_t        embarkation_time;
        name_t        surname;
        name_t        forename;
        //zeugs das noch noetig ist, z.B. Klasse, vllt. Flugnummer usw.
    };
    

    Dann evtl. einen eigenen Typen für Flüge und Funktionalität, die Flüge und reservierungen in Beziehung zueinander setzt.
    Möglichkeiten zum Suchen nach bestimmten Kriterien (Namen, Flugnummern, Reservierungsnummern etc.) sollte auch gegeben sein.



  • Danke @all
    Mit malloc() hat jetzt das geklappt was ich machen wollte. Ist zwar sehr unsauber und Speicherlastig, aber vorerst werd ich mich damit zufrieden geben!


Anmelden zum Antworten