Sommer-/Winterzeit auslesen



  • Ich kann ja schlecht schreiben

    if(Frage=="Welche Jahrezeit haben wir?")
    {
    	char Winterzeit;
    	char Sommerzeit;
    	int tm_isdst = static_cast<char>(tm_isdst);
    	int (0) = static_cast<char>(Winterzeit);
    	int (>0) = static_cast<char>(Sommerzeit); 
    	cout << "\n";
    	cout << "\t" << pUhrzeit ->tm_isdst << "\n"; //Jahreszeit
    	cout << "\n";
    }
    

    Zumindest ich bekomme bei meinem Compiler folgende Meldungen:

    -> Bei dem zweiten int bekomme ich die Meldung ""Der Ausdruck muss ein änderbarer Ivalue sein".

    -> Bei dem dirtten int bekomme ich bei dem Größerzeichen die Meldung "Es wurde ein Ausdruck erwartet".

    Muss da nicht eine Fallunterscheidung zwischen 0 und >0 gemacht werden oder bin ich auf´m Holzweg?

    Gruß



  • So etwa ?

    cout << "\t" << (pUhrzeit ->tm_isdst) ? "Sommerzeit" : "Normalzeit" << "\n"; //Jahreszeit
    


  • Da kommt bei mir bei Normalzeit die Meldung

    Error: Der Ausdruck muss einen integralen Typ oder einen Enumerationstyp aufweisen
    


  • silent_max, du solltest ein bißchen mehr Eigeninitiative (beim Programmieren) zeigen...

    Hinweis: Klammerung



  • Th69 schrieb:

    silent_max, du solltest ein bißchen mehr Eigeninitiative (beim Programmieren) zeigen...

    Hinweis: Klammerung

    Wie denn, wenn ich die Syntax nicht weiß??

    Ich habe jetzt

    cout << "\t" << (pUhrzeit -> tmisdst)?(Sommerzeit):(Normalzeit) << "\n";
    

    geschrieben und dennoch kommt bei der Klammer von Normalzeit die Meldung

    Error: Der Ausdruck muss einen integralen Typ oder einen Enumerationstyp aufweisen
    

    Die Meldung kommt bei mir zudem bei "\n".

    Den Bedingungsoperator habe ich erst durch DirkB kennengelernt.

    Sorry


  • Mod



  • SeppJ schrieb:

    Initiative!

    Die Initiazivpräzedenz bei silent_max scheint zu sein:

    1. Im Forum machen lassen
    2. Im Forum fragen
    3. Von Kollegen machen lassen
    4. Kollegen fragen
    5. Nichts machen
    6. Im Internet suchen
    7. Im Unterricht aufpassen
    8. Sein C++-Buch lesen

    Notes:
    The silent_max itself doesn't specify precedence levels. They are derived from the behaviour.

    Dass er in seinem Buch nicht weit vorangeschritten ist, hat er selbst verraten

    Den Bedingungsoperator habe ich erst durch DirkB kennengelernt.



  • silent_max schrieb:

    Th69 schrieb:

    silent_max, du solltest ein bißchen mehr Eigeninitiative (beim Programmieren) zeigen...

    Wie denn, wenn ich die Syntax nicht weiß??

    Du bekommst doch Feedback vom Compiler, Linker oder von deinem Programm selbst (wenn es läuft). Da musst nur dein Hirn einschalten, nachdenken und ggf etwas recherchieren, z.B. die Fehlermeldung, die du siehst. Oder schau im C++ Buch nach. Oder verwende den Debugger um zu sehen, was dein Programm macht. Aktuell kommt das leider so rüber, als wenn du zu faul wärst, wenigstens zu versuchen, deine Probleme selbst zu lösen. Das grenzt sogar an Trollerei, das Verhalten.



  • silent_max schrieb:

    (Sommerzeit):(Normalzeit)
    

    Diese Klammern sind genauso überflüssig wie die Klammern im folgenden Ausdruck:

    (5)+(3)*2
    


  • Bitte versteht mich jetzt nicht falsch... aber komme ich wirklich als so faul rüber??

    Ich werde versuchen, diesen Eindruck so schnell wie möglich zu revidieren. Bitte entschuldigt an der Stelle, dass ich wie bisher unterwegs war. Zudem werde ich versuchen, nur noch die allerwichtigsten Fragen zu posten.

    Edit:

    Darf ich überhaupt noch etwas posten oder habe ich jetzt jeden verkrault?



  • silent_max schrieb:

    Bitte versteht mich jetzt nicht falsch... aber komme ich wirklich als so faul rüber??

    ganz ruhig. Es ist leider nicht erkennbar, dass du in irgendeiner Weise Fortschritte machst. Das in Zusammenhnag mti dem teilweise etwas rauen Umgangston hier führt dann zu den Reaktionen.

    Natürlich darfst du Fragen stellen. Es sollte nur erkennbar sein, dass du Eigeninitiative zeigst.



  • Ich habe jetzt einmal einen anderen Weg versucht...

    if(Frage=="Welche Jahrezeit haben wir?")
    		{
    			time_t AktuelleZeit;
    			AktuelleZeit = time(NULL); //Aktuelle Systemzeit ermitteln
    			pUhrzeit = localtime(&AktuelleZeit);
    			cout << pUhrzeit->tm_isdst;
    		}
    

    Ich verstehe einfach nicht, dass bei mir in der Ausgabe bei der Frage rein gar nichts angezeigt wird, obwohl ich doch eindeutig nach der aktuellen Zeit gefragt habe????

    Gruß



  • silent_max schrieb:

    Ich verstehe einfach nicht, dass bei mir in der Ausgabe bei der Frage rein gar nichts angezeigt wird, obwohl ich doch eindeutig nach der aktuellen Zeit gefragt habe????

    siehst du, das ist noch so ein Problem von dir.

    vor diversen Posts wurdest du bereits darauf hingewiesen, dass du da einen Schreibfehler hast.

    Ich habe dich auf den Debugger hingewiesen. Damit könntest du Schritt für Schritt durch den Programmfluss gehen und schauen, in welche if-Anweisung er reingeht (oder eben nicht). Dann könntest du dir den genauen Inhalt der Variabel "Frage" ansehen und (Buchstabe für Buchstabe!) mit der Bedingung vergleichen.

    offensichtlich hast du das alles ignoriert.



  • daddy_felix schrieb:

    siehst du, das ist noch so ein Problem von dir.

    vor diversen Posts wurdest du bereits darauf hingewiesen, dass du da einen Schreibfehler hast.

    offensichtlich hast du das alles ignoriert.

    Das mit dem Rechtschreibfehler habe ich erst durch Dein Posting realisiert. Ich habe es bisher echt nicht überrissen, dass ich im Programmcode einen Rechstschreibfehler habe...

    Ich muss echt konzentrierter lesen bzw. bei der Sache sein...

    Sorry nochmal.

    P.S.: Jetzt funktioniert es.



  • silent_max schrieb:

    Das mit dem Rechtschreibfehler habe ich erst durch Dein Posting realisiert. Ich habe es bisher echt nicht überrissen, dass ich im Programmcode einen Rechstschreibfehler habe...

    Im Eröffnungspost war das Programm auch noch richtig. Nur deine Frage war falsch.

    Beim zweiten Post war dann auch das Programm falsch.



  • Ich hätte mal eine Frage bzgl. windowsspezifische Befehlen.

    Ich habe folgende Headerdatei wie folgt einbezogen:

    #include<windows.h>
    

    Folgenden Code habe ich noch hinzugefügt:

    if(Frage=="Wann beginnt die Sommerzeit?")
    {
      int Jahr;
      cout << "\n";
      cout << "Welches Jahr wollen Sie wissen?\n";
      cin  >> Jahr;
      cout << "Die Sommerzeit im Jahr " << Jahr << " beginnt am " << "\n";
      cout << "\n";
    }
    
    if(Frage=="Wann beginnt die Winterzeit?")
    {
      int Jahr;
      cout << "\n";
      cout << "Welches Jahr wollen Sie wissen?\n";
      cin  >> Jahr;
      cout << "Die Winterzeit im Jahr " << Jahr << " beginnt am " << "\n";
      cout << "\n";
    }
    

    Nun zu meinen Fragen:

    1.) Gibt es nun einen windowsspezifischen Befehl, der mir für Zeile 7 und Zeile 17 automatisch das Datum bzgl. Sommerzeitanfang bzw. Winterzeitanfang ausgibt?? In den Büchern, die ich habe steht bzgl. meiner Frage nichts... Auch habe ich im Internet keine passende Info gefunden...

    2.) In der Windows MS-DOS Box gibt es den Befehl "cls". Gibt es in der C++ Programmierung einen Befehl, der mir die Ausgabe auf Anfang zurück setzt?

    Gruß
    Max



  • silent_max schrieb:

    [...]
    2.) In der Windows MS-DOS Box gibt es den Befehl "cls". Gibt es in der C++ Programmierung einen Befehl, der mir die Ausgabe auf Anfang zurück setzt?

    Nein, das musst Du mithilfe der WinAPI - Konsolefunktionen selbst programmieren. Zum Beispiel:

    #include <windows.h>
    
    ...
    
    void ClearScreen(WORD attribute = 7)
    {
        CONSOLE_SCREEN_BUFFER_INFO csbi;
        COORD target = {0, 0};
        DWORD written;
    
        GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
        FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), ' ',
                                                csbi.dwSize.X * csbi.dwSize.Y,
                                                target, &written);
        FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), attribute,
                                                csbi.dwSize.X * csbi.dwSize.Y,
                                                target, &written);
    }
    
    ...
    
    int main()
    {
       ...
       ClearScreen();
       ...
    }
    


  • Wurde erst gestern hier im Forum gefragt und steht paar Threads unter deinem.

    http://www.c-plusplus.net/forum/311675



  • Allerdings ist in dem Thread keine (vernünftige) Lösung erwähnt worden.
    Edit:
    Außerdem geht es in dem Thread um 'Konsole Restart', was immer das auch heißen mag. Dass es um ein einfaches Bildschim löschen geht, ist aus meiner Sicht erst mal Spekulation von anderen Threadteilnehmern.



  • Du suchst sowas wie GetTimeZoneInformationForYear ?

    Die Referenzen von Microsoft stehen in der MSDN

    Wenn du etwas von Microsoft wissen willst, lässt du Google suchen und gibst zu deinen Suchwörtern noch MSDN mit an.

    Sommerzeit heißt auf Englisch "daylight saving time" oder kurz DST.


Anmelden zum Antworten