Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Vortag berechnen (c++)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.04.2010, 14:29 Uhr
~cyborgnrw
Gast


Hi zusammen

ich brauch eine Funktion die mir den Vortrag berechnet indem ich ein beliebiges Datum übergebe.

int vortag(int tag, int monat, int jahr)
{
//Anweisungen

return vortag_wert;
}

als return würde z.B. für den 14-04-2010 der wert 20100414 zurückgegeben.
Gibt es irgendeine Funktion in time.h die zumindenst den Vortag errechnet und Schaltjahre & Monatslänge berücksichtigt?

Hab leider bisher nichts zu meinem Problem gefunden : /

Bin für alle hinweise dankbar : )

Danke im vorraus für eure Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.04.2010, 15:40 Uhr
~cyborgnrw
Gast


Ich hab ein Tip auf den Unix-Time-Stamp bekommen...


C++:
#include <time.h>
class zeit
    {
    private:
        int monat;
        int tag;
        int tag_woche;
        int jahr;
    public:
        void set_all();
        int give_days_after_sunday();
        int give_day();
        int give_month();
        int give_year();
    };


    void zeit::set_all()
    {
      struct tm *time_val;
      time_t unix_time;
      unix_time = time(NULL)-(24*3600); //<-- Tag abziehn?
      time_val = localtime(&unix_time);
      if (time_val != NULL)
      {
         monat=time_val->tm_mon + 1;
         tag=time_val->tm_mday;
         jahr=time_val->tm_year + 1900;
         tag_woche = time_val->tm_wday;
      }
    }
    
    int zeit::give_days_after_sunday(){return tag_woche;}
    int zeit::give_day(){return tag;}
    int zeit::give_month(){return monat;}
    int zeit::give_year(){return jahr;}




So sollte es doch klappen oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.04.2010, 21:54 Uhr
0xdeadbeef
Gott
(Operator)


Die Problematik ist im Grunde nicht all zu kompliziert, lediglich das Prüfen auf das Monatsende ist etwas aufwändig. Etwa so:

C++:
bool ist_schaltjahr(unsigned jahr) {
  // Für 1582 und davor darfst du das selbst erweitern, sofern notwendig
  return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}

struct datum {
  unsigned jahr;
  unsigned monat;
  unsigned tag;
};

datum gestern(datum dat) {
  // Parameter wurde als Kopie übergeben, also können wir gleich damit arbeiten.
  static unsigned const tage_pro_monat[] = { 0, 31, 28, 31, 30, 31, 30,
                                                31, 31, 30, 31, 30, 31 };

  if(dat.tag == 1) {
    if(dat.monat == 1) {
      --dat.jahr;
      dat.monat = 12;
    } else {
      --dat.monat;
    }
    dat.tag = tage_pro_monat[dat.monat] + (dat.monat == 2 && ist_schaltjahr(dat.jahr) ? 1 : 0);
  } else {
    --dat.tag;
  }

  return dat;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: