[C/C++] löschen aus einer struktur

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Creatin, 12. Januar 2011 .

  1. 12. Januar 2011
    löschen aus einer struktur

    hey RRler,
    mein problem ist wie oben beschrieben das ich eine Struktur habe mit telefonlisten. Nun will ich zb aus der Struktur die 3. nummer löschen und ich weiß net wie ich das anstellen soll. Wenn ich die Nummer lösche soll aba auch der platz verschwinden und die nummern die untendrunter sind hochgeschoben werden.

    hier der wichtigste code ^^


    Code:
    struct liste{
     int num;
     char vorname[15];
     char nachname[15];
     char tel[20];
    }person[30];
    
    void loeschen()
    {
    int check;
    int z=0, w=0;
    
    printf("Welche Nummer moechten Sie loeschen?");
    scanf("%d", & check);
    
    
    for(z=0;z<i;z++)
    {
    if(person[z].num == check)
    {
     
    //hier soll der löschcode rein 
    
    printf("Datensatz wurde geloescht");
    Sleep(3000);
    system("cls");
    main();
    }
    }
    
    w=0;
    
    for(w=0;w<i;w++);
    {
    if(person[w].num != check)
     {
     printf("Falsche Eingabe");
     Sleep(3000);
     system("cls");
     }
    }
    
    main();
    }
    
    EDIT: Also es funktioniert alles, er findet auch den datensatz den ich löschen möchte nur ich weiß nicht wie ich ihn löschen soll-.-
     
  2. 12. Januar 2011
    AW: löschen aus einer struktur

    Nunja. Mit Arrays von konstanter Größe ist es zwar möglich, aber umständlich. Schaue dir lieber mal verkettete Listen an. Die entsprechen ungefähr dem was Du dir vorstellst. Andernfalls versuch es mit dynamisch großen Arrays, indem sich die Größe immer nach der Anzahl der vorhandenen und validen Telefonnummern richtet (Ist eine nicht gesetzt, wird sie nicht in die neue Liste eingefügt).
     
  3. 12. Januar 2011
    AW: löschen aus einer struktur

    Ist es so wie ich es gemacht habe nicht möglich da jetzt einen Wert rauszulöschen?
     
  4. 12. Januar 2011
    AW: löschen aus einer struktur

    Vorweg: Das Array besitzt eine konstante Größe. Das Einzige was mögliche wäre, wäre - die zu löschende Tel.-Daten - mit den Nächsten im Array zu überschreiben usw., bis es nichts mehr zu verschieben gibt. Das ist aber mehr als umständlich.
     
  5. 12. Januar 2011
    AW: löschen aus einer struktur

    wat?

    erstell doch enfach ne kopie der liste und übernimm alle einträge bis auf den, der gelöscht werden soll.

    // @Lötkolben

    ja das stimmt wohl, aber da er sich den verketteten listen so verweigert ist das wohl die einzige alternative die er akzeptiert ^^
     
  6. 12. Januar 2011
    AW: löschen aus einer struktur

    Das geht aber wirklich auf die Performance.
    Sind verkettet Listen wirklich keine Alternative?
     
  7. 13. Januar 2011
    AW: löschen aus einer struktur

    ich habs gelöst ich danke euch allen für die antworten. ich hab einfach das array überschrieben.

    person[z]=person[z+1];

    und ein paar andere kleinigkeiten dann hats funktioniert. Den so schreibt der einfach den nachfolgenden datensatz eins weiterrunter. Bei fflush hat er mir leider die komplette liste gelöscht, hab ich dann etwas später gemerkt.

    bw an alle raus danke für die mühe ^^
     
  8. 13. Januar 2011
    AW: löschen aus einer struktur

    fflush kümmert sich ______nicht_____ um Arrays oder dergleichen. Es kommt mir auch vor als würdest Du nicht genau wissen, was Du da genau machst. Du kannst eine STruktur nicht einfach zuweisen. Schau dir bitte nochmal alles genau an (Arrays, Strukturen, etc.).
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.