[C/C++] Datei nach ID durchsuchen und dieses Produkt ausgeben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von serious., 22. November 2011 .

  1. 22. November 2011
    Datei nach ID durchsuchen und dieses Produkt ausgeben

    Hallo,
    habe von der Uni ein Projekt, in dem wir eine Art Verwaltungssystem fuer einen Supermarkt erstellen wollen. Dies sollen wir alles mit Dateien verwalten.

    Wie kann ich nun in der Datei nach einer best. Produkt-ID suchen und dann auch nur das Produkt ausgeben welches diese ID besitzt?
    Die Produkte sind mit verketteten Listen dynamisch.

    Es gibt eine Struktur:

    Spoiler
    typedef struct _produkt{
    int id;
    int kategorie;
    char name[MAX];
    float preis_ek;
    struct _produkt * nextProdukt;
    } produkt;

    und hier ist die Headerdatei dazu:
    Spoiler
    // --> Produkte
    // Produkte lesen

    produkt holeProduktNachId(int produktId);
    produkt * holeAlleProdukte();
    // Produkte bearbeiten
    int bearbeiteProdukt(produkt bearbeiteProdukt);
    // Produkte erstellen

    int erstelleProdukt(produkt erstelleProdukt);
    // Produkt löschen
    void loescheProdukt(char *wen);

    Probleme hab ich mit den Funktionen: holeProdukteNachId & loescheProdukt.

    Frage:
    Wie kann ich nur ein best. Produkt loeschen?
    Wie kann ich nur ein best. Produkt nach der Id ausgeben?
     
  2. 22. November 2011
    AW: Datei nach ID durchsuchen und dieses Produkt ausgeben

    Da eure Struktur ja immer nur auf das nächste Produkt verweist, musst du zunächst mal die Start-ID in einer Variable sichern.. Und dann durchläufst du einfach alle Produkte solange, bis du wieder bei der Start-ID angekommen bist bzw. du das richtige Produkt gefunden hast...

    Code:
    produkt* holeProdukteNachId(produkt *liste, int id) {
     int sid = liste->id; //Start-ID
     
     do {
     if(liste->id == id) // Ist die ID des aktuellen Elements == der gesuchten?
     return(liste); // Wenn ja gib das aktuelle Element zurück
     liste = liste->nextProdukt; // ansonsten gehe zum nächsten
     } while(liste && sid != liste->id); // ist die Start-ID != der ID des aktuellen Elements?
     // da ihr ja in nextProdukt keinen NULL-Pointer haben solltet, weil ihr ja eine endlose Pointer-Liste habt,
     // kannst du dir das NULL-Pointer prüfen theorethisch sparen..
     return(NULL);
    }
    
    So oder so ähnlich sollte es aussehen..
    Und das lösche Produkt ist etwas schwieriger, da ihr ja kein Prev-Pointer habt..

    Code:
    produkt* loescheProdukt(produkt *liste) {
     int sid = liste->id;
     
     do {
     if(liste->nextProdukt->id == sid) {
     liste->nextProdukt = liste->nextProdukt->nextProdukt;
     return(liste);
     }
     liste = liste->nextProdukt;
     } while(liste);
    }
    
    Beides ungetestet, aber so in etwa sollte es passen, wenn ich jetzt keinen groben Denkfehler habe...

    MfG
     
  3. 22. November 2011
    AW: Datei nach ID durchsuchen und dieses Produkt ausgeben

    Werd erst heute Abend dazu kommen mir es genauer anzuschaun.
    Falls ich dann noch Fragen hab, meld ich mich nochmal.
    Trozdem schonmal vielen Dank fuer deine Hilfe.
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.