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));
}

Hilfe
Neues Thema
Antworten

Nach oben


