Brauch HILFE&Tipps fuer mein Programm!



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



  • bitte... nicht jemand mal shcaun wies geht, dankeee



  • Da ist dann wohl ein Enter von den vorigen Eingabe mit durchgerutscht. Mach mal zu Beginn der Funktion QuickInfo ein cin.ignore(std::cin.rdbuf()->in_avail()); (evtl reicht hier auch cin.ignore(1);)
    BTW du solltest vielleicht noch was ändern (abgesehen von den gotos). Mach aus der Variablen message mal ein string und lies so ein

    getline(cin,message);
    

    sonst kannst du nur 4 Zeichen lange Messages einlesen.



  • Hi,
    jo danke für den tipp klappt jetzt alles wunderbar, kann mir dann mal dann jmd noch schnell sagen was cin.ignor() macht ( es hat auch nur so gereicht ohne des etwas in der klammer stehen musste). Bezüglich zu dem mit dem „goto“, sorry aber ich habe keine ahnung wie ich das aendern soll ich weiss jmd hat mir shcon mal nen loesungsversuch gepostet ich habs auch ausprobiert aber irgendwie gings net… kann mal nich einer fuer den teil nen kompletten code posten waer net… und hat dann evtl noch wer nen tipp wie ich ohne „goto“ wieder zum anfang komme damit ich nen neuen terin eintragen kann. Waer net danke.

    PS: ist conio.h für clrscr() fuer ne c++ konsolen aPP so verkehrt des man drauf verzichten sollte oder ist es nicht so schlimm??



  • 1. cin.ignore() löscht die angegebene Anzahl Zeichen aus dem Tastaturpuffer. Wenn nichts als Argument angegeben wird 1 Zeichen.
    2. Die gotos kann man durch sinnvolle Anwendung von while-Schleifen ersetzen
    Teile deinen Code in einzelne Funktionen auf. Das erleichtert die Strukturierung
    3. conio ist nicht Standard (Borland Erweiterung) weswegen es nicht gerne gesehen ist. Wenn es bei dir funktioniert und du nicht vorhast auf einen anderen Compiler (Plattform) zu wechseln ist es OK.



  • hallo...
    erst mal was wegen while anweisung habs noch mal so probiert

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

    jedes mal wennsch ne zahl richtig zw. 0 unf 32 angebe gibt er sie aber net aus ich kann enter druecken bis ich schwarz werde und wenn ich nen buchstaben ein gebe kommt die cin.fail() meldung... und die meldung kommt aber nicht wenn ich ne zahl uebr 31 oder unter 1 angebe.. .komisch ....

    und was ich noch wissen wollte die es ne moeglichkeit text in der konsole zu ueberschreiben also zB. (tt mm jj) also das der buchstabe t dann mit dem was ich eingabe also ne zahl ueberschrieben wird.... oder entspricht das nicht dem c++ standart?



  • das mit der while anweisung muss net mehr diskutiert werden hab es eben selber hin bekommen... *stolz ist*
    aber das wegen dem uebershcreiben muesste mir mal noch wer sagen ob sowas moeglich ist


Anmelden zum Antworten