Brauch HILFE&Tipps fuer mein Programm!



  • Hi erst mal an ALLE.
    hehe... ich habe es heute mal geschaft mich in diesem forum zu registrieren, nachdem ich dann doch schon mehr als einmal hier um hilfe gerufen habe.
    Heute möchte ich mich mal bei euch erkundigen wie es mit meinen programm am besten weiter gehen sollte, ich habe dazu einige fragen 😕

    //--- Klassen -----------------------------------------------------18.June 06---
    //--- Termin eingeben ----------------------------------------------------------
    //------------------------------------------------------------------------------
    
    #include <iostream.h>
    #include <conio.h>
    #include <windows.h>
    #include <dos.h>
    
    class Termin
    {
       public:
    
           int tag;
           int monat;
           int jahr;
           void termin();
            Termin();
            ~Termin();
    
    };
    
    void Termin::termin()
    {
            Termin::tag;
            Termin::monat;
            Termin::jahr;
    }
    
    main()
    {
    //--- TAG ----------------------------------------------------------------------
    
            int ptag, pmonat, pjahr;
    
            input_day:
            cout << "**************** \n";
            cout << "*";
            textcolor(3);
            cprintf("Terminkalender");
            cout << "* \n";
            cout << "**************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Tag   >> ";
            cin >> ptag;
            if(ptag<1 || ptag>31)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": \"" << ptag <<".\" ist kein Monatstag!";
                    sleep(1.5);
                    clrscr();
                    goto input_day;
            }
    
    //--- MONAT --------------------------------------------------------------------
    
            clrscr();
            input_month:
            cout << "**************** \n";
            cout << "*";
            textcolor(3);
            cprintf("Terminkalender");
            cout << "* \n";
            cout << "**************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Monat >> " << ptag << ".";
            cin >> pmonat;
            if(pmonat<1 || pmonat>12)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": \"" << pmonat <<".\" ist kein Monat!";
                    sleep(1.5);
                    clrscr();
                    goto input_month;
            }
    
    //--- JAHR ---------------------------------------------------------------------
    
            clrscr();
            input_yeahr:
            cout << "**************** \n";
            cout << "*";
            textcolor(3);
            cprintf("Terminkalender");
            cout << "* \n";
            cout << "**************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Jahr  >> " << ptag << "." << pmonat << ".";
            cin >> pjahr;
            if(pjahr<2005 || pjahr>2100)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": Unwahrscheinlicher Termin !";
                    sleep(1.5);
                    clrscr();
                    goto input_yeahr;
            }
            clrscr();
    
    //--- AUSGABE ------------------------------------------------------------------
    
            Termin* jetzt;
            jetzt->tag = ptag;
            jetzt->monat = pmonat;
            jetzt->jahr = pjahr;
    
            cout << "**************** \n";
            cout << "*";
            textcolor(3);
            cprintf("Terminkalender");
            cout << "* \n";
            cout << "**************** \n\n";
            cout << "Ihr Termin ist am >>>   " << jetzt->tag   <<   ".";
    
            switch (pmonat)
            {
                    case 1:
                            cout << "Januar  ";
                            break;
                    case 2:
                            cout << "Februar  ";
                            break;
                    case 3:
                            cout << "Maerz  ";
                            break;
                    case 4:
                            cout << "April  ";
                            break;
                    case 5:
                            cout << "Mai  ";
                            break;
                    case 6:
                            cout << "Juni  ";
                            break;
                    case 7:
                            cout << "Juli  ";
                            break;
                    case 8:
                            cout << "August  ";
                            break;
                    case 9:
                            cout << "September  ";
                            break;
                    case 10:
                            cout << "Oktober  ";
                            break;
                    case 11:
                            cout << "November  ";
                            break;
                    case 12:
                            cout << "Dezember  ";
                            break;
            }
    
             cout << jetzt->jahr  << "                                       <<<";
    
            getchar();
            return 0;
    }
    

    soviel erst mal zu meinem quelltext. ihr werdet fest gestellt haben das ich eine Konsolenanwendung programmieren möchte die wie ein terminkalender arbeiten soll. so jetzt möchte ich zu meinen fragen kommen 😉

    ⚠ 1. Frage:
    ich habe ja jetzt hier quasi schon mal einen teil eines terminkalenders erfüllt, man kann das datum eingeben wo sich der termin befindet und zum schluss wird einem noch mal das datum ausgegeben. jetzt möchte ich mein programm dahin gehend erweitern, dass es mir den so eben eingegeben termin abspeichert und fragt ob noch weitere termine anliegen die das programm auch speichert(auf den jeweiligen user pc). dann soll es die termine auflisten.

    ⚠ 2.Frage:
    ich moechte das prog dann noch so weit erwitern das ich zu jedem termin noch ne kleine info schreiben kann, die erscheint wenn ich den termin aus der liste aussuche und dann noch des ich termine auch wieder loeschen kann.

    ⚠ 3.Frage:
    gibt es die moeglichkeit, eine syncronisierung zu machen mit windows( in meinen fall Windoof XP Prof.), dass das prog autom. das heuteige datum erkennt und ausgibt und mit terminen vergleicht und evtl. mekert wenn des datum schon in der vergangenheit liegt, bzw termine dann loescht wenn sie verfallen.

    bitte verkloppt mich net gleich, wenn ihr des hier alles lest bzw DANKE erst mal an die jeniegen die ueberhaupt erstmal bis hier gelesen haben 😃 . also wenn ihr euch entschliessen solltet mir zu helfen wär es super cool, wenn ihr die fragen einzelnt erklärt wies gemacht wird, danke! vieleicht noch dafuer um mich etwas fuer meine dummheit zu rechtfertigen, ich bin abiturient habe meist nur in meiner freizeit fuer c++ boarland builder 6 zeit und habe hier nur fachliteratur die ich nur schwer verstehe.

    PS: ich bin fuer jeden neuen Kontakt in: ICQ >> 205-349-302 << oder meiner E-Mail >> SteahlZ@web.de <<, dankbar. so das ich den ein paar ansprechprtner also Lehrer habe die ich dann fragen kann. ich sags mal so ich habe mich nie wirklich au lehrer gefreut aba hier ist des was anderes 😃

    ALso ich bedankde mich erst mal recht herzlich fürs lesen DANKE, DNAKE DNAKE... und würde mich halt echt freuen wenn ihr mir hier bei mein problem helft ThankS.



  • oh sorry muss noch was los werden... hatte ich vergessen zu sagen. eigentlich funktioniert das programm aber bei der letzten ausfuehrung oder so, also quasi da wo man des prog mit enter beendet kommt ne fehlermeldung und ich haBE KEINE ahnung wie ich diese beseitigen kann, also whats to do ?



  • hi,

    zuerst mal ein paar Anmerkungen zu deinem Code:
    * class Termin: Normalerweise macht man Membervariablen private und übergibt im Konstruktor dann die Werte mit denen die Klasse initialisiert werden soll. Desweiteren erschließt sich mir bei weitem nicht der Sinn der Funktion termin() in dieser Klasse...
    * Goto's sind nach weitverbreiteter Meinung schlechter Stil. Man sollte Schleifen dem vorziehen
    * Dein Programm benutzt imho die "windows.h" garnet könnte man also weglassen. Auch ohne die wärs nicht Standard C++, da "dos.h" imho nur bei Borland gibt. Desweiteren muss es "#include <iostream>" (also ohne .h) sein!
    * Du vergisst hier:

    Termin* jetzt;
    jetzt->tag = ptag;
    jetzt->monat = pmonat;
    jetzt->jahr = pjahr;
    

    dem Zeiger jeetzt auch einen Wert zuzuweisen. Mal abgesehen davon würd ichs wie bereits gesagt, die Werteübergabe über den Konstruktor machen und die Klasse aug dem Stack anlegen, was dann ca. so aussehen könnte:

    Termin jetzt(ptag, pmonat, pjahr);
    

    * Das switch(pmonat) kannst dir sparen und stattdessen ein Array aus Strings (bzw. char arrays) nehmen, bei dem du dann (pmonat - 1) als Index nimmst.

    1dass es mir den so eben eingegeben termin abspeichert

    -> ofstream (Output File Stream), damit kann man Dateien erstellen und reinschreiben.

    fragt ob noch weitere termine anliegen die das programm auch speichert(auf den jeweiligen user pc).

    -> Schleifen

    dann soll es die termine auflisten

    entweder wieder alles aus der Datei lesen, falls du es gleich in die Datei schreibst, oder einen std::vector mit den eingegebenes Terminen anlegen, denn am Ende ausgeben und anschließend in einer Datei speichern.

    ich moechte das prog dann noch so weit erwitern das ich zu jedem termin noch ne kleine info schreiben kann, die erscheint wenn ich den termin aus der liste aussuche

    Na dann musst halt noch ne Eingabe machen lassen, am besten mit getline und std::string.

    und dann noch des ich termine auch wieder loeschen kann.

    Aus der Datei, oder wie?

    [quote]das prog autom. das heuteige datum erkennt und ausgibt[quote]
    Das aktuelle Datum gibts über time() und localtime().



  • hi,
    joa naja so das es halt nicht mehr mit aufgelistet wird. jetz stellen sich mir shcon wieder fragen.... was bedeutet imho?, du hast geschrieben das ich hier

    Termin* jetzt;
    jetzt->tag = ptag;
    jetzt->monat = pmonat;
    jetzt->jahr = pjahr;
    

    den wert zuweisen soll. hab ich das den nicht getan mit ptag, pmonat und pjahr... das sind doch die variablen von cin>> " " wo der user den wert schreibt.

    und das mit time(), brauch ich dann einfach nur nur irgendwo in miene code auftauchen lassen damit dann irgendwo die zeit ershceint???



  • tag, monat und jahr sind auch nicht das Problem, sondern jetzt. Du legst einen Zeiger an, weist ihm aber kein gültiges Objekt zu. Wenn Du nicht weisst was ich meine lies das Tutorial über Zeiger am besten nochmal durch 😉



  • so zum Beispiel:

    Termin* jetzt;
    // wenn default konstruktor vorhanden:
    jetzt = new Termin; // sonst ist jetzt ein ungültiger (eben: nicht initialisierter) Zeiger!
    jetzt->tag = ptag;
    jetzt->monat = pmonat;
    jetzt->jahr = pjahr;
    

    T0bi schrieb:

    was bedeutet imho?

    siehe: http://de.wikipedia.org/wiki/IMHO

    T0bi schrieb:

    und das mit time(), brauch ich dann einfach nur nur irgendwo in miene code auftauchen lassen damit dann irgendwo die zeit ershceint???

    Nein. 👍 siehe: http://www.cplusplus.com/ref/ctime/time.html

    Edit: zuuuu spät...aber das mit dem Tut. ist ne gute Idee! ⚠



  • T0bi schrieb:

    was bedeutet imho?

    imho = in my humble opinion = meiner bescheidenen Meinung nach

    den wert zuweisen soll. hab ich das den nicht getan mit ptag, pmonat und pjahr...

    Damit meinte ich, dass du wenn du einen Pointer (Termin *****) benutzt, dann muss dieser Pointer auch auf ein Objekt verweisen. Dieses Objekt hast du aber nicht erstellt, d.h. dein Pointer verweist ins Nirvana. Du solltest:

    Termin *jetzt = new Termin();
    

    machen, damit erstelltst du ein Termin Objekt und weist den Zeiger auf das Terminobjekt dem Pointer jetzt zu. Damit verweist jetzt auf ein gültiges Objekt. Danach kannste erst auf die Member von jetzt zugreifen.

    und das mit time(), brauch ich dann einfach nur nur irgendwo in miene code auftauchen lassen damit dann irgendwo die zeit ershceint???

    Tutorial

    edit: Da bin ich aber ganz schön zu spät... 🤡



  • hehe,
    ich weiss des es nen bissel nervig von moA is und ihr euch sicher nur vorm kop fassen tut, aber ich muss sagen jetzt hab ichs auch nen bissel verstanden... o.O muss ich nur noch gucken des ich des mit dem kon- und destruktor kram kapiere... dnake erst mal fuers helfen ich werd des hier erst mal alles aendern und so. wenn ich dann mal wieder hilfe brauche meld ich mich 😃

    danke!



  • huhu ich bins mal wieder 😃
    habe an meine programm noch nen bissel rum geschraubt und es sieht nun wie folgt aus:

    //--- Klassen -----------------------------------------------------18.June 06---
    //--- Termin eingeben ----------------------------------------------------------
    //------------------------------------------------------------------------------
    
    #include <iostream.h>
    #include <conio.h>
    #include <dos.h>
    
    class Termin
    {
       private:
    
           int tag;
           int monat;
           int jahr;
    
       public:
           void SetTag(unsigned int t) {tag=t;}
           void SetMonat(unsigned int m) {monat=m;}
           void SetJahr(unsigned int j) {jahr=j;}
           void termin();
            Termin();
            ~Termin();
    
    };
    
    void Termin::termin()
    {
            cout << " Ihr Termin ist am:      " << tag << "." << monat << "." << jahr;
    }
    
    Termin::Termin() : tag(0), monat(0), jahr(0)      // Konstruktor
    {
    }
    
    Termin::~Termin()                                 // Destruktor
    {
    }
    
    main()
    {
    //--- TAG ----------------------------------------------------------------------
    
            int ptag, pmonat, pjahr;
    
            input_day:
            cout << "**************** \n";
            cout << "*";
            textcolor(3);
            cprintf("Terminkalender");
            cout << "* \n";
            cout << "**************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Tag   >> ";
            cin >> ptag;
            if(ptag<1 || ptag>31)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": \"" << ptag <<".\" ist kein Monatstag!";
                    sleep(1.5);
                    clrscr();
                    goto input_day;
            }
    
    //--- MONAT --------------------------------------------------------------------
    
            clrscr();
            input_month:
            cout << "**************** \n";
            cout << "*";
            textcolor(3);
            cprintf("Terminkalender");
            cout << "* \n";
            cout << "**************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Monat >> " << ptag << ".";
            cin >> pmonat;
            if(pmonat<1 || pmonat>12)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": \"" << pmonat <<".\" ist kein Monat!";
                    sleep(1.5);
                    clrscr();
                    goto input_month;
            }
    
    //--- JAHR ---------------------------------------------------------------------
    
            clrscr();
            input_yeahr:
            cout << "**************** \n";
            cout << "*";
            textcolor(3);
            cprintf("Terminkalender");
            cout << "* \n";
            cout << "**************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Jahr  >> " << ptag << "." << pmonat << ".";
            cin >> pjahr;
            if(pjahr<2005 || pjahr>2100)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": Unwahrscheinlicher Termin !";
                    sleep(1.5);
                    clrscr();
                    goto input_yeahr;
            }
            clrscr();
    
    //--- AUSGABE ------------------------------------------------------------------
    
            Termin datum;
            datum.SetTag(ptag);
            datum.SetMonat(pmonat);
            datum.SetJahr(pjahr);
            datum.termin();
    
            cin.get();
            getchar();
            return 0;
    }
    

    soviel dazu! jetzt habe ich aba wieder nen schoenheitsfehler anzumeckeln und zwar den das er mir beim monat nur die zahl aus gibt und ich will aber das da wieder der name steht.grml! nun wußt ich aber net wohin mit switch&case, die jenigen die hier geholfen haben wissen schon des ewig lange teil da. ich muss sagen es war mir auch etwas zu viel des alles zu tippen und ihr meintet einfacher waers mit

    * Das switch(pmonat) kannst dir sparen und stattdessen ein Array aus Strings (bzw. char arrays) nehmen, bei 
    dem du dann (pmonat - 1) als Index nimmst.
    

    sorry, aber ich habe keinen plan wie das geht. koenntet ihr mir bitte erklären wies gemacht wird und wieso pmonat -1 sein soll.
    DANKE!



  • sorry, aber ich habe keinen plan wie das geht. koenntet ihr mir bitte erklären wies gemacht wird und wieso pmonat -1 sein soll.
    DANKE!

    Diese Probleme haben viele Leute und damit in nem Forum nicht jeder wieder alles nochmal erklären muss, gibt es Leute, die haben sich die Mühe gemacht und alles aufgeschrieben. Das nennt man dann Tutorials. Beispiel: http://cpp-tutor.de/cpp/index.html

    mfg.



  • huhu,
    so leutz schaut doch mal hab des nun mit soner string dings gelöst sieht so aus:

    class Termin
    {
       private:
    
           int tag;
           unsigned char monat;
           int jahr;
    
       public:
           void SetTag(unsigned int t) {tag=t;}
           void SetMonat(unsigned int m) {monat=m;}
           void SetJahr(unsigned int j) {jahr=j;}
           void termin();
            Termin();
            ~Termin();
    
    };
    
    void Termin::termin()
    {
            string monat[12] = {"Januar", "Februar", "Maerz", "April", "Mai", "Juni",
                                "Juli", "August", "September", "Oktober", "November", "Dezember"};
    
            cout << " Ihr Termin ist am:      " << tag << "." << monat << "." << jahr;
    }
    

    aber wenn ich mir dann des datum ausgeben lasse steht beim monat kein name sondern ne zahl (zB. 2891383) hab ich irgendwo mit was falschen initialisiert???

    bitte schaut doch mal wo der fehler ist, DANKE.



  • Ne, aber Du müsstest ihm irgendwie klarmachen WELCHEN Monat er ausgeben soll. "monat" ist eine Tabelle von 12 Stück, soll er raten? 😃

    cout << monat[this->monat - 1];
    

    Wenn Du die Tabelle "monat" und den char "monat" jetzt noch unterschiedlich nennst kannst Du Dir sogar das this-> sparen.



  • hehe,
    super lord danke hat geklappt, funzt aba auch ohne diese " -1 ",
    jetzt hab ich eigentlich die meisten meiner maengel die ich am anfang gestellt habe an meinem programm geschaft, *freu*. doch hab ich hier noch nen grosses anliegen. und zwar der >>Stack<<, irgendwie kapier ichs net wie des funktionier ich hab hier mal von meinem tutorial des beispiel(einmal struktur und einmal klasse), ich werd hier mal die klasse nehmen:

    class tNode
    {
    public:
        int d;
        tNode *next;
    };
    
    class tStack
    {
    public:
        tStack();
        ~tStack();
        void push(int);
        int pop();
    private:
        tNode * Anker;
    };
    
    tStack::tStack()
    {
        Anker = 0;
    }
    
    tStack::~tStack()
    {
    tNode *last = Anker;
    
        while (Anker)
        {
            last = Anker;
            Anker = Anker->next;
            delete last;
        }
    }
    
    void tStack::push(int d)
    {
        tNode *node = new tNode;
        node->d = d;
        node->next = Anker;
        Anker = node;
    }
    
    int tStack::pop()
    {
    int inhalt=0;
    
        if (Anker)
        {
            tNode *old = Anker;
            Anker = Anker->next;
            inhalt = old->d;
            delete old;
        }
        return inhalt;
    }
    
    main()
    {
    
    tStack stack;
    
        stack.push(2);
        stack.push(5);
        stack.push(18);
    
        cout << stack.pop() << endl; 
        cout << stack.pop() << endl; 
        cout << stack.pop() << endl; 
    
    }
    

    ich weiss das man solche stacks, ziemlich häufig gebrauchen kann in diversen programmen. und mir wurde auch gesagt um die termine zu speichern und auf zurufen sollte ich die einzelnen termine auf nen stack packen... nur hab ich hier 2probleme....

    1. ich habe keinen blassen wie der stack funzt, also ich habe es mir shcon lange angeschaut und versucht zu verstehen aber ich schafs net. also waer meine erste frage an euch koenntet ihr mir mal erklären wies geht, so mit //Komentar da hinter fuer jede zeile. ich weiss es ist sehr viel verlangt von mir aber deswegen bin ich doch hier um hilfe zu ordern. also BITTE helft mir, BIG DANKE!!!

    2. koenntet ihr mir dann noch zeigen wie ich meine termine in den stack dann packe... ich wuesste net welche funktion, variable oder so ich nehemen sollte. hier noch mal der ganze code:

    //--- Klassen -----------------------------------------------------18.June 06---
    //--- Termin eingeben ----------------------------------------------------------
    //------------------------------------------------------------------------------
    
    #include <iostream.h>
    #include <conio.h>
    #include <dos.h>
    #include <time.h>
    #include <string>
    
    class Termin
    {
       private:
    
           int tag;
           int monat;
           int jahr;
    
       public:
           void SetTag(unsigned int t) {tag=t;}
           void SetMonat(unsigned int m) {monat=m;}
           void SetJahr(unsigned int j) {jahr=j;}
           void termin();
            Termin();
            ~Termin();
    
    };
    
    void Termin::termin()
    {
            string out_monat[12] = {"Januar", "Februar", "Maerz", "April", "Mai", "Juni",
                                "Juli", "August", "September", "Oktober", "November", "Dezember"};
    
            cout << " Ihr Termin ist am:      " << tag << "." << monat[out_monat] << " " << jahr;
    }
    
    Termin::Termin() : tag(0), monat(0), jahr(0)      // Konstruktor
    {
    }
    
    Termin::~Termin()                                 // Destruktor
    {
    }
    
    /*
    class tNode
    {
    public:
        int d;
        tNode *next;
    };
    
    class tStack
    {
    public:
        tStack();
        ~tStack();
        void push(int);
        int pop();
    private:
        tNode * Anker;
    };
    
    tStack::tStack()
    {
        Anker = 0;
    }
    
    tStack::~tStack()
    {
    tNode *last = Anker;
    
        while (Anker)
        {
            last = Anker;
            Anker = Anker->next;
            delete last;
        }
    }
    
    void tStack::push(int d)
    {
        tNode *node = new tNode;
        node->d = d;
        node->next = Anker;
        Anker = node;
    }
    
    int tStack::pop()
    {
    int inhalt=0;
    
        if (Anker)
        {
            tNode *old = Anker;
            Anker = Anker->next;
            inhalt = old->d;
            delete old;
        }
        return inhalt;
    }                                                   */
    
    main()
    {
    time_t Exact_Date;
    tm* heute;
    Exact_Date = time(0);
    heute = localtime(&Exact_Date);
    
     std::cout << " Heute ist der: " << heute->tm_mday << "."
                                     << heute->tm_mon+1 << "."
                                     << heute->tm_year+1900 << "\n\n";
    //--- TAG ----------------------------------------------------------------------
     void sleep(unsigned int);
    
            int ptag, pmonat, pjahr= -1;
    
            input_day:
            cout << " ****************** \n";
            cout << " *";
            textcolor(3);
            cprintf(" Terminkalender");
            cout << " * \n";
            cout << " ****************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Tag   >> ";
            cin >> ptag;
            if(ptag<1 || ptag>31)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": \"" << ptag <<".\" ist kein Monatstag!";
                    sleep(1.5);
                    clrscr();
                    goto input_day;
            }
    
    //--- MONAT --------------------------------------------------------------------
    
            clrscr();
            input_month:
            cout << " ****************** \n";
            cout << " *";
            textcolor(3);
            cprintf(" Terminkalender");
            cout << " * \n";
            cout << " ****************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Monat >> " << ptag << ".";
            cin >> pmonat;
            if(pmonat<1 || pmonat>12)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": \"" << pmonat <<".\" ist kein Monat!";
                    sleep(1.5);
                    clrscr();
                    goto input_month;
            }
    
    //--- JAHR ---------------------------------------------------------------------
    
            clrscr();
            input_yeahr:
            cout << " ****************** \n";
            cout << " *";
            textcolor(3);
            cprintf(" Terminkalender");
            cout << " * \n";
            cout << " ****************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Jahr  >> " << ptag << "." << pmonat << ".";
            cin >> pjahr;
            if(pjahr < heute->tm_year+1900)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": Unwahrscheinlicher Termin !";
                    sleep(1.5);
                    clrscr();
                    goto input_yeahr;
            }
            clrscr();
    
    //--- AUSGABE ------------------------------------------------------------------
    
            Termin datum;
            datum.SetTag(ptag);
            datum.SetMonat(pmonat);
            datum.SetJahr(pjahr);
            datum.termin();
    
            cin.get();
            getchar();
            return 0;
    }
    

    schauts euch an, kritik ist erwuenscht und verbessert mich ruhig, DANKE! DANKE! DANKE!



  • wie schon ganz am Anfang gepostet ersetze endlich die 'goto' durch
    andere Schleifen.
    ausserdem hast du mehrzeilige Blöcke mit indentischen Code; versuch den
    so in die Soure zu integrieren, das nur ein solch ein Block überigbleibt.

    Ergebnis dieser Aktionen der Code wird kürzer, übersichtlicher und du
    kannst deine Kenntnisse erweitern.





  • hmmm....
    ist ja shcoen und gut was ihr hier an kritik stellt, aber ich bin immer noch net shclauer in bezug auf den stack 😞
    ist es wirklich zuviel verlangt des mir des mal wer erklärt... hmmmm und des mit dem goto meint ihr bestimmt mit return loesen oder?



  • hmm will mir den niemand helfen? 😞
    hmm vieleicht da noch ne frage,f.-th meinte

    wie schon ganz am Anfang gepostet ersetze endlich die 'goto' durch 
    andere Schleifen. 
    ausserdem hast du mehrzeilige Blöcke mit indentischen Code; versuch den 
    so in die Soure zu integrieren, das nur ein solch ein Block überigbleibt.
    

    ermeint sicher den part hier:

    //--- TAG ----------------------------------------------------------------------
     void sleep(unsigned int);
    
            int ptag, pmonat, pjahr= -1;
    
            input_day:
            cout << " ****************** \n";
            cout << " *";
            textcolor(3);
            cprintf(" Terminkalender");
            cout << " * \n";
            cout << " ****************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Tag   >> ";
            cin >> ptag;
            if(ptag<1 || ptag>31)
            {
    
                    cout << "\n\n\n\n";
                    textcolor(4);
                    cprintf(" Fehler");
                    cout << ": \"" << ptag <<".\" ist kein Monatstag!";
                    sleep(1.5);
                    clrscr();
                    goto input_day;
            }
    
    ....
    

    hmm ich komm net drauf wie ichs anders machen kann, kann mir hier nicht mal einer helfen, please....



  • z.b. so:

    int ptag, pmonat, pjahr= -1;
    
        while(true)
        {
            cout << " ****************** \n";
            cout << " *";
            cout << " * \n";
            cout << " ****************** \n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Tag   >> ";
            if(!(cin >> ptag)) // Testet ob jemand etwas total Falsches wie "fdg" eingeben hat!
            {
                cout << "Sie muessen eine Zahl zwischen 0 und 32 eingeben!" << endl;
                cin.clear(); // setzt cin wieder zurück
                cin.sync();  // serzt cin wieder zurück
                continue; // Nochmal eingeben
            }
            if(0 < ptag && ptag < 32)   // Diese Schreibweise lässt sich lesen:
            {                           // "ptag muss zwischen 0 und 32 liegen"
                break;
            }
            cout << "\n\n\n\n";
            //textcolor(4);
            //cprintf(" Fehler");
            cout << ": \"" << ptag <<".\" ist kein Monatstag!";
            //sleep(1.5);
            //clrscr();
        }
    

    mfg.



  • thanX,
    ok ich werds erst mal so ausprobieren, wa smich etwas verwnudert ist das while(true), woher nihmt man das true? ich wuerd gern mal nen paar zeilen aus dem code da interpretieren und koennt ihr mir sagen obs richtig war? hm ok,

    while(true)
    

    solange alles ok ist, mache mit der schleife weiter.....

    if(!(cin >> ptag))
    

    wenn, eingabe ptag NICHT(!) zahl ist, da ja ptag mit int initialisiert wurde, ist mache ....

    ist des so richtig ausgedrueckt? doch eins kann ich mir da immer noch net begreiflich machen wieso setzt man das jahr immer = -1, wieso??

    achja wie schon ewig gefragt koennte mir nun nicht einmal wer des stack erklären... -.-



  • was ist hier dran falsch?

    #include <iostream>
    using namespace std;
    
    main()
    {
        int ptag;
    
        cout << " ****************** \n";
        cout << " * Terminkalender * \n";
        cout << " ****************** \n\n";
        cout << "\n Geben Sie hier ihren Termin ein:   >> ";
        cin >> ptag;
    
        while(!(cin >> ptag))
        {
                cout << "Sie muessen eine Zahl zwischen 0 und 32 eingeben!" << endl; 
                cin.clear();
                cin.sync();
                continue;
    
            if(0 < ptag && ptag < 32)
            {
                break;
            } 
            cout << "\n\n\n\n";
    
            cout << ": \"" << ptag <<".\" ist kein Monatstag!"; 
    
        }
    
        cout << ptag << endl;
    
        cin.get();
        return 0;
    }
    

    der debugger meint: [Linker Error] Unresolved external 'WinMain' referenced from C:\PROGRAMME\BORLAND\CBUILDER6\LIB\C0W32.OBJ

    whats to do???


Anmelden zum Antworten