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
oderphone_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