habe folgendes Problem. An meiner UNI programmieren wir in c++ 6.0. und zwar c programme. Auf meinem laptop ist vista installiert mit dem neuen c++ 2008.
Das Problem an meinem Programm ist, das es bei Zufallszeit und bei Wartung null anzeigt. Den Quelltext kompiliert er ohne fehler.. Hat sich den irgendetwas mit ctime geändert bei 2008. Oder wo steckt der Fehler...
Aber es funktioniert ganz normal bei c++ 6.0 und sogar bei eclipse!
#include <stdio.h> #include <time.h> #include <stdlib.h> #define wartungsfrist 302400 //in sec #define freizeit 226800 //in sec int zufall(int, int); int main() { time_t anfang, ende , wanfang, wende; struct tm *anfangstag, *endtag, *wanfangstag, *wendtag; int zahl,wartung; srand((time(NULL))*1000); anfangstag=(struct tm*)calloc(sizeof(struct tm),1); // Speicher für Anfangstag struckt besorgen endtag=(struct tm*)calloc(sizeof(struct tm),1); // Speicher für Endtag struckt besorgen wanfangstag=(struct tm*)calloc(sizeof(struct tm),1); // Speicher für wanfangstag struckt besorgen wendtag=(struct tm*)calloc(sizeof(struct tm),1); // Speicher für Endtag struckt besorgen if((anfangstag==NULL)||(endtag==NULL)||(wendtag==NULL)||(wanfangstag==NULL)) { printf("FEHLER konnte nicht genug Speicher besorgen"); return -1; } // ANFANGSTAG anfangstag->tm_year = 2009-1900; anfangstag->tm_mon = 4; anfangstag->tm_mday = 18; anfangstag->tm_hour = 8; anfang = mktime(anfangstag);//Anfangs Zeitstempel printf("Anfangstag:%s\n",asctime(anfangstag)); // ENDTAG endtag->tm_year = 2009-1900; endtag->tm_mon = 4; endtag->tm_mday = 22; endtag->tm_hour = 16; endtag->tm_min = 59; endtag->tm_sec = 59; ende = mktime(endtag);//End Zeitstempel printf("Endtag:%s\n",asctime(endtag)); // WOCHENENDE ANFANG wanfangstag->tm_year = 2009-1900; wanfangstag->tm_mon = 4; wanfangstag->tm_mday = 22; wanfangstag->tm_hour = 17; wanfang = mktime(wanfangstag);//Wochenende Anfangs Zeitstempel printf("Wochenende Anfang:%s\n",asctime(wanfangstag)); // WOCHENENDE ENDE wendtag->tm_year = 2009-1900; wendtag->tm_mon = 4; wendtag->tm_mday = 25; wendtag->tm_hour = 8; wende = mktime(wendtag);//Wochenende Anfangs Zeitstempel printf("Wochenende Ende:%s\n",asctime(wendtag));//Wochenende Ende Zeitstempel zahl=zufall(anfang, ende);//Zufallszahl erstellen printf("Zufallszahl:%s\n",ctime(&zahl));//ausgabe zufallszahl wartung=zahl+wartungsfrist;// 3,5 Tage addieren printf("Wartung:%s\n",ctime(&wartung)); if((wartung>=wanfang)&&(wartung<=wende))//Wenn wartung im wochende warnung { printf("\nWarnung Wartungstag faellt ins Wochenende\n\n"); } return 0; } int zufall( int a, int e) { double r = e - a + 1; return a + (int)(r * rand()/(RAND_MAX+1.0)); }