Float Variablen in if Abfragen.



  • BIOSzillator schrieb:

    Wie speichert man denn optimal Telefonnummern, wenn man dies nicht mit einer int Variable tun sollte?

    Also ich kenne Telefonnumern in Formaten wie zum Beispiel
    +49 6657 4456789 //typisch für im handy, weil man cool ist
    01573-6655493 //recht normal
    01573/6655493 //traditionell
    4567 Q //im Ortsnetz mit Abrufbeantworter traditionell
    4567 (AB) //im Ortsnetz mit Abrufbeantworter modern

    Das kann man alles mit struct{int Land/int Vorwahl/int Nachwahl/bool AB} abdecken, aber sowas geht meiner Erfahrung immer nach hinten los. Sie Sekretärennen fühne sich angepisst, eine Nummer in drei Feldern plus Checkbox eintippen zu müssen. Sie selber benutzen die Nummern doch dann wieder. In ihrem Job sind sie viel schauer als wir.

    Würde string nehmen und darauf bestehen, daß die Sekretärinnen keinen Scheiß eingeben.

    Mancher hat sogar mehrere Nummern, die man auf Gedeih und Verreck nicht sinnvoll in die Datenbank geklopft kriegt. Hans hat zum Beispiel:
    22767 (Erziehungsberechtigte, tagsüber nicht da)
    4459 (Notfallnummer, die Oma)

    Ein Problem, sorry.

    Ich mache für soweas gerne die Telefonnummer.hpp mit drin

    //typedef std::string Telefonnummer
    Uups, wir sind ja in C. 
    struct Telefonnummer{
       char* data;
    };
    

    und kanns an zentraler Stelle ändern, wenn nötig. Ist aber nie nötig irgendwie.


  • Mod

    volkard schrieb:

    struct{int Land/int Vorwahl/int Nachwahl/bool AB}

    Warum als Zahlenwert? Willst du den Durchschnittswert aller Telefonnummern ausrechnen? Ich finde bestimmt auch irgendwo eine Nummer, die mehr Stellen in der Nachwahl hat als ein üblicher int könnte.



  • SeppJ schrieb:

    volkard schrieb:

    struct{int Land/int Vorwahl/int Nachwahl/bool AB}

    Warum als Zahlenwert? Willst du den Durchschnittswert aller Telefonnummern ausrechnen? Ich finde bestimmt auch irgendwo eine Nummer, die mehr Stellen in der Nachwahl hat als ein üblicher int könnte.

    Hast recht. int passt eigentlich gar nicht. man will mit telefonnummern ja nicht rechnen. und wenn man sie vergleichen will, sortieren, dann lexikografisch, wie strings. ich war gewolft, sorry.



  • So, dann will ich mich uach nochmal melden.
    Danke euch beiden für die Tipps.
    Ich werde es dann mal mit string probieren. In dem Buch, das ich benutze, sind sie allerdings noch nicht an der Reihe. Würde vielleicht auch erklären, warum wir bis jetzt immer Telefonnummern in int gespeichert haben.



  • Die Tel.Nr. als int kann doch völlig unterschiedlich interpretiert werden:
    Aus 0800 12234 wird bei Speicherung als int 80012234, aus 0049 2304 123 wird 492304123 ...
    Da du also nie weißt, wieviel führende Nullen Deine Tel.Nr. haben soll, ist int untauglich.



  • Belli schrieb:

    Aus 0800 12234 wird bei Speicherung als int 80012234, aus 0049 2304 123 wird 492304123 ...

    nein, er wird schimpfen, weil er oktal die 8 nicht will.



  • Hier mal ein Beispiel einer Telefonnummer, die von Kunden in D so direkt eingeben wird. Die Zahlen sind frei erfunden. Die Anzahl der Stellen nicht.

    0.... - Vorwahl: 5 Ziffern
    99999 - Rufnummer hier 5 Ziffern, können je nach Ortsnetz auch mehr sein
    01010 - Kunden-ID
    2 - Hauptgruppe
    3 - Untergruppe
    1 - Bonus?
    88 - Anzahl der Positionen des Auftrags, max. 99

    Also habt ihr bis hier schon 20 Ziffern ohne Dialog bis hier.

    Eventuell noch sind folgend Raute oder Stern gefragt.

    Diese Zahlenfolge kann im folgenden Dialog noch erweitert werden.

    Dann gab/gibt es ja auch die Netze wo die Telefonnummern nicht nur aus Zahlen, sondern aus Buchstabenfolgen zusammen gesetzt sind.

    Aber solche Sachen findet man in einer "normalen" Telefonliste selten.
    Eine oder zwei führende Nullen sind da eher relevant.



  • elise schrieb:

    Belli schrieb:

    Aus 0800 12234 wird bei Speicherung als int 80012234, aus 0049 2304 123 wird 492304123 ...

    nein, er wird schimpfen, weil er oktal die 8 nicht will.

    #include <stdio.h>
    
    int main()
    {
       int telnr;
    
       printf("Gib Tel.Nr ein:\n");
       scanf("%d", &telnr);
       printf("Eingabe war: %d", telnr);
    }
    

    Eingabe: 0800123
    Ausgabe: 800123



  • #include <stdio.h>
    
    int main()
    {
    	int telnr =  0800123;
    }
    

    error: invalid digit "8" in octal constant

    meinte ich, falls du sie speicherst als int 😉



  • Dein Code ist ziemlich statisch für 'ne Anwendung, die Telefonnummern verwalten soll ...


Anmelden zum Antworten