ein int wert löschen



  • hi boardis

    in meiner hausaufgabe
    soll ich eine structur definieren
    was ich auch gemacht habe.
    dann soll man eine funktion machne die einen eintarag löscht.

    was auch bis auf das hier "strcpy(telefonbuch[i].telefonnr, "\0");" funktionert.
    könnt ihr mir bitte sagen wie ich einen double long wert löschen kann.

    struct person
       {
       char vorname[20];
       char nachname[20];
       double long telefonnr;
       };
    
    //ein Feld mit 100 einträgen
    person telefonbuch[100];
    
    void loeschen ()
        {
        int i;
        i = nummereingabe();
        strcpy(telefonbuch[i].vorname, "\0");
        strcpy(telefonbuch[i].nachname, "\0");
        strcpy(telefonbuch[i].telefonnr, "\0");
        }
    


  • Du kannst ihn mit 0.0 überschreiben aber löschen kannst du ihn nicht. Wenn das Array wie in deinem Fall statisch ist kannst du lediglich die Variable die zeigt an welcher Stelle ein neuer Datensatz eingefügt werden kann um 1 zurücksetzen und so die Stelle für ne erneute Überschreibung freigeben. Direkt löschen ginge nur mit einem zur laufzeit variabel erstelltem Array oder einer verketteten Liste.



  • öhm, kommt drauf an was du unter "löschen" verstehst. Löschen bedeutet ja, vollkommen entfernen. aber dat geht ja numal nicht. Da es eine Zahl ist, kannst du sie höchstens auf einen Wert setzen, der nicht als Telefonnummer durchgeht. Z.b.:

    telefonbuch[i].telefonnr = 0; //oder -1

    Kommt halt drauf an.
    🙂



  • kannst auch noch die strcpy alle raushauen.

    telefonbuch[i].vorname[0] = 0;
    


  • Übrigens gibt es keinen Typ 'double long' (höchstens 'long double') und ein Zahlentyp ist gänzlich ungeeignet, um darin eine Telefonnummer zu speichern.



  • danke für die hilfe

    dass habe ich mir auch gedacht dass es nicht geht.

    dieses programm soll die zahlen nur in laufe dieses programms speicher und nicht für immer.

    thx und noch einen schönen tag wünsche ich euch.



  • eagle00 schrieb:

    dieses programm soll die zahlen nur in laufe dieses programms speicher und nicht für immer.

    Selbst wenn du die Telefonnummer nur einlesen, auf dem Monitor anzeigen und wieder vergessen willst, ist double nicht der richtige Datentyp dafür (das fängt bei der Trennung der Vorwahl von der Rufnummer an, geht über die führende(n) Null(en) bei Ferngesprächen und Gruppierung der Ziffern und endet bei der recht begrenzten Genauigkeit, mit der double-Werte (und Zahlen generell) gespeichert werden können). Nur weil ein Wert aus Ziffern besteht, ist er noch lange keine "Zahl".



  • @ CStoll

    danke da hast du recht, habe jetzt auch probiert mit einer Null am Anfang. Die wurde bei der Ausgbe nicht angezeigt.

    welchen datentyp soll ich dann verwenden?

    THX



  • Hallo

    Einen String, am naheliegensten natürlich std::string.

    bis bald
    akari



  • Entweder std::string oder phone_number (selber basteln).



  • @ akari,finix

    ich danke euch beiden.

    nur ich darf keinen weiteren string machne. Wenn das nicht ohne strings geht dann werde ich es so lassen mit long double.

    und das hier "std::string" kenn ich noch nicht.



  • Wenn du dich schon auf die build-in Typen beschränken mußt, würde ich auf jeden Fall ein char-Array verwenden.

    (aber imho ist std::string deutlich einfacher zu handhaben und sicherer als die aus C geerbten char[]s)



  • long double ist zwar IMHO schwachsinnig für telefonnummern, aber jeder wie er meint.



  • danke an euch alle

    habe eine char variable genommen.

    cu eagle


Anmelden zum Antworten