Brauch HILFE&Tipps fuer mein Programm!



  • 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???



  • T0bi schrieb:

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

    Nein. Schleife ist:

    while(Bedingung)
    {
    }
    

    Und die Schleife wird so lange durchgeführt wie Beidung == true. In diesem Fall hat true == true und das heißt: unendlich! Natürlich stimmt das nicht ganz, denn mit break kann eine Schleife verlassen werden.

    Tobi schrieb:

    if(!(cin >> ptag))
    

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

    Jein, stimmt nicht ganz. Nimm am besten folgende Syntax:

    int zahl;
        cin >> zahl;
        if(cin.fail())
        {
            // blabla
        }
    

    ist einfacher zu verstehen, macht aber das gleiche.

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

    das hast du doch gemacht oder?

    gaaaanz wichtig:
    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=main#Answ

    mfg.



  • wieso druecken sich alle drum mir alle fragen zu beantworten *schnief*



  • T0bi schrieb:

    wieso druecken sich alle drum mir alle fragen zu beantworten *schnief*

    Falls du die Frage mit dem Stack meinst: Davon hab ich keine Ahnung, weiß jemand anders vielleicht.

    Und sonst: Welche Fragen sind dir denn noch unbeantwortet?

    mfg.



  • hmmm... schön das du fragst *g*, na erst mal die debugger errormeldung
    [Linker Error] Unresolved external 'WinMain' referenced from C:\PROGRAMME\BORLAND\CBUILDER6\LIB\C0W32.OBJ, kA was der will.

    naja und zum beispiel wie des mit dem speichern funzt... sagen wir mal ich habe erfolgreich nun mein tag eingegeben und er wird auch ausgegeben, will ich ne option das er mir das speichert und wenn ich mein porg schliesse und später wieder öffne das ich des dann wieder laden kann... bitte nich twieder nur nen link hier guck dir des tut. an ... kanns mir net einer einfach mal fuer mein beispiel machen?

    es ist so des ich nen prog schreiben will das wie nen terminklaender arbeitet und wills vieleicht als besonderelernleistung im abi einbringen, da ist mir jede hilfe hier viel wert.... also danke leutz

    und wieso macht man nun des jahr auf -1 -.-



  • T0bi schrieb:

    hmmm... schön das du fragst *g*, na erst mal die debugger errormeldung
    [Linker Error] Unresolved external 'WinMain' referenced from C:\PROGRAMME\BORLAND\CBUILDER6\LIB\C0W32.OBJ, kA was der will.

    Warum kommt die "debugger errormeldung" vom Linker?



  • Das mit dem Linker Fehler liegt daran, dass du hier eine Konsolenanwendung willst, du aber anscheinend eine normale Anwendung erzeugt hast (Windows).
    Erzeuge ein neues Projekt mit dem Konsolenexperten und kopier deinen Code dort rein.
    Fragen bezüglich dieses Problems solltest allerdings eher im BCB-Forum stellen.



  • T0bi schrieb:

    naja und zum beispiel wie des mit dem speichern funzt... sagen wir mal ich habe erfolgreich nun mein tag eingegeben und er wird auch ausgegeben, will ich ne option das er mir das speichert und wenn ich mein porg schliesse und später wieder öffne das ich des dann wieder laden kann... bitte nich twieder nur nen link hier guck dir des tut. an ... kanns mir net einer einfach mal fuer mein beispiel machen?

    In Tutorials sind auch Codebeispiele.

    und wieso macht man nun des jahr auf -1 -.-

    Wer ist "man"?

    mfg.



  • ich hab hier nen prob *g*...
    wieso geht des net... kein fehler aber concole schliesst nach eingabe

    #include <iostream>
    
    using namespace std;
    
    main()
    {
            int tag;
    
            cout << " Gib hier den Tag des Termins an!\n\n";
    
            cin >> tag;
    
            while(true)
            {
    
                    if(cin.fail())
                    {
                           cin.clear();
                           cin.sync();
                           continue;
                    }
    
                    if(0 < tag && tag < 32)
                    {
                        break;
                    }
    
                 cout << tag << endl;
                 cin.get();
    
            }
    
    }
    

    hmmm.... 😕



  • Das solltest du selber wissen, wenn nicht dann ist mein Tipp: Nimm nen anderen Compiler/IDE! Es kotzt mich an, dieses scheiß Problem mit der Konsole die sich schließt. Das wird hier jeden Tag durchgekaut! Nehmt doch einfach mal ne ordentliche IDE die das automatisch erledigt! Versuch's mal mit Code::Blocks! http://prdownloads.sourceforge.net/codeblocks/codeblocks-1.0rc2_mingw.exe?download

    mfg.



  • und hier noch mal der Link zur Konsolen-FAQ
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html
    hier ist das Ganze ausfürlich beschrieben.



  • hi, ich hab noch nen bissel an meinen Kalender rum geshcraubt und nun siehts wie folgt aus:

    //--- Klassen -----------------------------------------------------18.June 06---
    //--- Termin eingeben ----------------------------------------------------------
    //------------------------------------------------------------------------------
    
    #include <iostream>
    #include <time.h>
    #include <string>
    #include <fstream>
    #include <conio.h>
    using namespace std;
    
     class Termin
     {
       public:
           void SetTag(unsigned int t) {tag=t;}
           void SetMonat(unsigned int m) {monat=m;}
           void SetJahr(unsigned int j) {jahr=j;}
           void GetTermin();
           void QuickInfo();
            Termin();
            ~Termin();
       private:
           int tag;
           int monat;
           int jahr;
           char message[256];
    
     };
    
            void Termin::GetTermin()
            {
                 string out_monat[] = {"Januar", "Februar", "Maerz", "April", "Mai", "Juni",
                                       "Juli", "August", "September", "Oktober", "November", "Dezember"};
    
                 cout << "================================================================================\n";
                 cout << " Ihr Termin ist am:      " << tag << "." << monat[out_monat-1] << "  " << jahr << "\n\n";
            }
    
            void Termin::QuickInfo()
            {
                ofstream Info("C:\\Quickinfos.txt",ios::app);
    
                    cout << " \"I-N-F-O:\"\n\n ";
                    cin.getline(message, sizeof(message)-1);
                    Info << " " << message << "\n\n";
                    Info.close();
    
                    if(Info.good())
                    {
                        cout << " Termin wurde erfolgreich gespeichert! " << endl;
                        cin.get();
                    }
    
                    else
                    {
                        cout << " Fehler: Termin konnte nicht gespeichert werden! " << endl;
                        cin.get();
                        cin.clear();
                        cin.sync();
                    }
    
            }
    
     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;
    }                                                   */
    
    int main()
     {
     time_t Exact_Date;
     tm* heute;
     Exact_Date = time(0);
     heute = localtime(&Exact_Date);
    
     cout << " Heute ist der: " << heute->tm_mday << "."
                                << heute->tm_mon+1 << "."
                                << heute->tm_year+1900 << "\n\n\n\n";
    //--- TAG ----------------------------------------------------------------------
    
            int ptag, pmonat, pjahr;
    
            input_day:
            cout << " ******************************************************************************\n";
            cout << " *                               TerminKalender                               *\n";
            cout << " ******************************************************************************\n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Tag   >> ";
            cin >> ptag;
            if(ptag<1 || ptag>32)
            {
    
                    cout << "\n";
                    cout << " Fehler: \"" << ptag <<".\" ist kein Monatstag!\n\n\n";
                    cout << "================================================================================\n";
                    cin.clear();
                    cin.sync();
                    goto input_day;
            }
    
    //--- MONAT --------------------------------------------------------------------
    
            clrscr();
             cout << " Heute ist der: " << heute->tm_mday << "."
                                        << heute->tm_mon+1 << "."
                                        << heute->tm_year+1900 << "\n\n\n\n";
            input_month:
            cout << " ******************************************************************************\n";
            cout << " *                               TerminKalender                               *\n";
            cout << " ******************************************************************************\n\n";
            cout << "\n Geben Sie hier ihren Termin ein: Monat >> " << ptag << ".";
            cin >> pmonat;
            if(pmonat<1 || pmonat>12)
            {
    
                    cout << "\n\n";
                    cout << " Fehler: \"" << pmonat <<".\" ist kein Monat!\n\n\n";
                    cout << "================================================================================\n";
                    cin.clear();
                    cin.sync();
                    goto input_month;
            }
    
    //--- JAHR ---------------------------------------------------------------------
    
            clrscr();
             cout << " Heute ist der: " << heute->tm_mday << "."
                                        << heute->tm_mon+1 << "."
                                        << heute->tm_year+1900 << "\n\n\n\n";
            input_yeahr:
            cout << " ******************************************************************************\n";
            cout << " *                               TerminKalender                               *\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";
                    cout << "Fehler: Unwahrscheinlicher Termin !\n\n\n";
                    cout << "================================================================================\n";
                    cin.clear();
                    cin.sync();
                    goto input_yeahr;
            }
            clrscr();
    //--- AUSGABE ------------------------------------------------------------------
    
            Termin datum;
            datum.SetTag(ptag);
            datum.SetMonat(pmonat);
            datum.SetJahr(pjahr);
            datum.GetTermin();
            datum.QuickInfo();
    
            cin.get();
    
    }
    

    ich habe jetzt noch ne neue Funktion ein ge baut "QuickInfo()" die soll den user nach eingabe des datum fragen ob bzw das er eine info an geben will/soll, nun ja laesst sich alles wunderbar compilieren. ABER nach abfrage des termins -> beim weiteren ENTER druecken, steht ja dann der eingegebe Termin da und nun muesste man ja erst mal die info angeben, doch da kA ueberspringt des prog was und gibt gleich die meldung aus ja ... der termin wurde gespeichert... schoen wers auch wenn ich die meldung rausnehme und dann ne info eingebe und die datei später öffnen will, ist die datei zwar 1kb gross aber es steht nix drin 😕

    koennte mir jemand sagen was da los ist?

    kommt schon helft mir doch bitte 😞


Anmelden zum Antworten