Strukturen in C



  • Hallo, können sie mir bitte bei folgenden Aufgaben helfen:

    A) Für die Realisierung eines Workflow-Management-Tools soll eine Datenstruktur für
    die eingehenden Aufträge (Bestellungen) einer Weinhandlung in der Programmiersprache
    C entworfen werden. Eine Bestellung muss die folgenden Daten
    beinhalten:
    - Auftragsnummer
    - Bestelldatum mit Jahr, Monat, Tag (definieren Sie dazu einen neuen
    Strukturtyp Datum)
    - Lieferdatum (gleicher Typ wie Bestelldatum)
    - Kundennummer
    - Kundenkennung (max. 40 Zeichen)
    - Verkaeufername (maximal 12 Zeichen)
    - Liste für maximal 100 Zeiger auf Bestellposition
    Eine Bestellposition soll folgende Komponenten besitzen:
    - Weinsorte (maximal 30 Zeichen)
    - Jahrgang
    - Anzahl der Flaschen
    - Preis einer Flasche in € und Cent

    Hier habe ich bis jetzt sowas gemacht:

    #include <stdio.h>

    int main(){

    struct bestellung{
    int auftragsnummer;
    int kundennummer;
    int kundenkennung[40];
    char verkaeufername[12];

    struct datum {
    int jahr;
    int monat;
    int tag;
    } bestelldatum;

    struct datum
    {
    int tag;

    } lieferdatum;

    struct bestellposition{
    int liste[100];
    int weinsorte[30];
    int jahrgang;
    int anzahlflaschen;
    int preis[];

    };
    };

    }

    😎 Geben Sie die C-Funktion neudef() an, welche die Kundenkennung und das
    Lieferdatum einer Bestellung neu definieren. Als Parameter erhält diese Funktion
    einen Zeiger auf die Bestellung, die zu ändern ist. Weiterhin einen Zeiger auf die
    neue Kundenkennung und einen Zeiger auf das neue Lieferdatum.

    Bei Punkt 😎 kommen meine Probleme, bin nicht sehr sicher wie ich das genau machen soll, habe bis jetzt das gemacht, ist aber nicht sehr vollständig

    int neudef(struct bestellung*ptr_bestellung){

    int kundenkennung;
    struct lieferdatum;
    int ptr_kundenkennung =&kundenkennung;
    lieferdatum
    ptr_lieferdatum;

    }

    c) Geben Sie die C-Funktion addbest() an, welche eine weitere Bestellposition in
    eine Bestellung einträgt.
    (Hinweis für die Position, an die die neue Bestellungposition einzutragen ist: Die Liste
    enthält nach der letzten Bestellposition einen NULL-Pointer.)
    Die Funktion erhält einen Zeiger auf die Bestellung und einen Zeiger auf die neue
    Bestellposition als Parameter.
    Nach dem Eintrag der Bestellposition wird die Bestellung wieder "ordnungsgemäß"
    abgeschlossen.

    Bei Punkt C) habe ich nicht sehr viele Ideen. Ich gehe in diese Richtung etwas solches in meinem Funktion zu schreiben:

    struct bestellung* newBestellposition = malloc(sizeof(struct bestellung));[code="c"][code]



  • Zu A) Da die struct datum zweimal benötigt wird, solltest du sie vorher deklarieren und dann in der struct bestellung einfach nur einfügen.
    Dasselbe gilt für struct bestellposition, die 100 Zeiger auf bestellung enthalten soll.

    Zu 😎 Ich komme nach der Beschreibung auf drei Paramter, die der Funktion übergeben werden. Du hast nur einen.
    WEnn du den Funktionskopf richtig hast, kommt der Rest auch.

    Du hast zwar Code-Tags probiert, Leider nicht erfolgreich. Dafür gibt es aber die Vorschau (gleich neben dem Absenden-Button)
    Du kannst den Code mit der Maus markieren und dann auf den C-Button unter dem 😡 klicken,
    oder den Cursor an den Codeanfang positionieren, einmal auf den C-Button klicken (der bekommt dann einen 😉 und das ganze nochmal am Ende vom Code.

    Den Namen newBestellposition finde ich hässlich. Bleib innherhalb eines Namens bei einer Sprache.
    Das kann ruhig deutsch sein (obwohl manche nur englische Bezeichner als die wahren betrachten).



  • Okay, danke. Aber kann ich mich noch nicht richtig orientieren bei B), wie komme ich richtig auf die Lösung

    int neudef(struct bestellung * ptr_bestellung, int * kundenkennung, int * lieferdatum){

    int neue_kundenkennung;
    kundenkennung = &neue_kundenkennung;

    int neue_lieferdatum;
    lieferdatum = &neue_lieferdatum;

    }



  • Welchen Datentyp haben Datum und Kundenkennung?

    😎 Geben Sie die C-Funktion neudef() an, welche die Kundenkennung und das
    Lieferdatum einer Bestellung neu definieren.

    Ich verstehe das so, dass du in einer bestehenden Bestellung die Werte für Lieferdatum und Kundenkennung neu setzt (überschreibst).

    kika1116 schrieb:

    Als Parameter erhält diese Funktion
    einen Zeiger auf die Bestellung, die zu ändern ist. Weiterhin einen Zeiger auf die
    neue Kundenkennung und einen Zeiger auf das neue Lieferdatum.

    Da du alle Werte als Paramter bekommst, brauchst du auch keine weiteren lokalen Variablen.

    Das sind zwei Zeilen. Je eine für Datum und Kundenkennung.



  • Ist es so besser?

    int neudef(struct bestellung * ptr_bestellung, bestellung * kundenkennung, datum * lieferdatum){
    ptr_bestellung[40];
    lieferdatum;

    }



  • Nein.

    Wie ist denn kundenkennung in deiner struct deklariert?



  • Hallo kika1116,

    packe deinen Code in Code-Tags, damit deine Beiträge besser lesbar sind.


Log in to reply