x



  • xx



  • Nimm doch einfach 'nen String. Und editier mal deinen Post hinsichtlich Syntaxhighlighting. 😉



  • So gemacht :). Gibt es nicht eine Möglichkeit mit einem array? Hab bisher Strings noch nicht gemacht und würd gern die Sache mit einem Array machen.



  • Benutz strcmp() aus <cstring>



  • fuwangschu schrieb:

    So gemacht :). Gibt es nicht eine Möglichkeit mit einem array? Hab bisher Strings noch nicht gemacht und würd gern die Sache mit einem Array machen.

    Warum ?

    Gerade als Anfänger ist string viel einfacher, sicherer und sauberer.

    Ich bin immer wieder erstaunt, wie weit verbreitet die These ist, Anfänger sollten "erstmal mit char* rumfrickeln, bevor sie string benutzen dürfen" (braucht man irgendeinen "char*-Weihe" vorher ?)....

    Gruß,

    Simon2.



  • Hmm tjo bin auch Vertreter der Ansicht @Simon2, dass man die "char-Weihe" braucht 😛

    #include <iostream.h>
    #include <conio.h>
    

    So nicht korrekt. Laut Standard haben die Standardheader kein .h im Namen 😉 conio.h braucht man nicht 😛
    =>

    #include <iostream>
    
    class person
    {
        std::size_t m_countChilds;
        unsigned long m_balance;
        char* m_name;
        char m_familyStatus[6];
    
    public:
        person(const char* name, const char* familyStatus) : m_countChilds(0), m_balance(0L) 
        { 
            m_name = new char [std::strlen(name) + 1];
            std::strcpy(m_name, name);
            std::strncpy(m_familyStatus, familyStatus, 5);
        }
        ~person() { delete [] m_name; }
    
    public:
        friend std::ostream& operator << (std::ostream& out, person const& data)
        {
             out << "Inhaber: " << data.m_name << " (" << data.m_familyStatus << ")"
                 << "\nKontostand: " << data.m_balance;
        }
    
    public:
        void push_childs(std::size_t count) { m_countChilds += count; }
        std::size_t pop_child() { return m_countChilds--; }
        void pay_in(unsigned long count) { m_balance += count; }
        std::size_t pay_off(unsigned long count) { const unsigned long tmp(m_balance); m_balance -= count; return tmp; }
    };
    
    class bank 
    {
    public:
        void push_person(const char* name, const char* familyStatus) { m_customers.push_back(person(name, familyStatus)); }
    
        friend std::ostream& operator<<(std::ostream& out, bank const& data)
        { 
            for (std::size_t i = 0; i < data.m_countCustomers; ++i)
                out << "------- Inhaber " << i + 1 << " -------" << data.m_customers[i] << ".......   ....   .......\n";
        }
    
    protected:
        person* m_customers;
        std::size_t m_countCustomers;
    };
    

    😛 Nen bissel viel auf einmal und nicht gestestet ... keine Zeit ... nur kurz hier reingetippt ..

    if (m_countChilds == 0 && std::strcmp(m_familyStatus, "ledig") == 0)
    {
        m_balance = (m_balance / 100) * 116);
        std::cout << "Sie bekommen 16% auf ihr Guthaben gutgeschrieben. Neuer Kontostand: " <<  m_balance << std::endl;
    }
    

    ... 😛

    #include <iostream>
    #include <cstring>
    

    nicht vergessen ^^



  • (D)Evil schrieb:

    Hmm tjo bin auch Vertreter der Ansicht @Simon2, dass man die "char-Weihe" braucht :P...

    Weiß ich (haben wir bestimmt schonmal drüber dikutiert hier 😃 ), bin aber (vorsichtig ausgedrückt) "hochgradig unüberzeugt" und fühloe mich durch die Existenz dieses Threads wieder einmal bestätigt. :p 😉
    Wenn jemand mit "Text" arbeiten möchte, sollte er das tun (sprich "std::string")... wenn er sich für Pointerarithmetik interessiert, soll er das tun. Aber er sollte nicht (vollkommen unnötigerweise) Zweiteres machen müssen, um Ersteres zu erreichen.

    Gruß,

    Simon2.



  • @Simon2: Ja haben wir ... deswegen gehe ich dajetzt auch nicht mehr drauf ein 😛
    @fuwangschu: "dio = (spar / 100) * 116" ist übrigens identisch (mathematisch gesehen) mit "dio = spar * 1,16" ...



  • Nur möchte ich nur die ausstehenden Zinsen nachgezahlt bekommen, die bei dem Verlust durch Division zweier Ganzzahlen auf die Jahre hinweg entstehen 😉

    Grüße...

    Heiko



  • hmm

    const double res(100 * 1.25);
    

    ... hmm deiner Meinung nach wäre jetzt in res 100. Sollte 125 drin sein 😛



  • Ich weiß schon, warum ich bei solchen dingen immer

    a) gleich den brauchbaren Datentyp oder

    b) ein explizites static_cast<brauchbarer Datentyp>(...)

    verwende.

    Das ständige implizite <denglish>gecaste</denglish> verwirrt ja auch nur. 😉

    OT: @(D)Evil: warst du im Urlaub, ich habe schon lange keine einsteigerfreundlichen Listings mehr gesehen.



  • OT: @(D)Evil: warst du im Urlaub, ich habe schon lange keine einsteigerfreundlichen Listings mehr gesehen.

    Weißnicht ... bin oft im Urlaub ^^ Musst schon einen Zeitraum nennen 😛


Anmelden zum Antworten