Obliczanie różnicy czasu
Ostatnio zmodyfikowano 2015-01-03 01:53
fornakter Temat założony przez niniejszego użytkownika |
Obliczanie różnicy czasu » 2015-01-01 20:29:11 Witam. Chciałem napisać program, który oblicza różnicę czasu między miastami. Pomijam problem z MSVS 2013 i poleceniem localtime z którym nie mogłem sobie poradzić, po prostu odpaliłem DevC++ i wpisałem #include <ctime> #include <cstdlib> #include <iostream>
using namespace std;
void wait( int seconds ) { clock_t endwait; endwait = clock() + seconds * CLOCKS_PER_SEC; while( clock() < endwait ) { } }
int zegar( time_t & t ) { t = time( NULL ); struct tm * czas; czas = localtime( & t ); cout << "Godzina " << czas->tm_hour << ":" << czas->tm_min << ":" << czas->tm_sec << endl; for(;; ) { wait( 1 ); system( "cls" ); t = time( NULL ); czas = localtime( & t ); cout << "Godzina " << czas->tm_hour << ":" << czas->tm_min << ":" << czas->tm_sec << endl; } return t; }
int main() { time_t t, koniec; struct tm * miasto; double roznica; zegar( t ); miasto = localtime( t ); roznica = difftime( miasto, koniec ); cout << roznica; return 0; }
Do tej pory mam zegarek. W sekcji main, chce zrobić te porównanie. Ten kod oczywiscie nie działa i wykakuje błąd C:\...\DevC++\Czas\main.cpp [Error] invalid conversion from 'time_t {aka long long int}' to 'const time_t* {aka const long long int*}' [-fpermissive] |
|
SocrateZ |
» 2015-01-03 01:53:37 Błąd masz ponieważ do localtime przekazujesz zmienną a nie wskaźnik do zmiennej time_t. miasto = localtime( t ); Jak już mówiłem, musisz przekazać wskaźnik. Dalej. Funkcja localtime zwraca strukturę tm. Jak sama nazwa wskazuje zmienna jest strukturą. W związku z powyższym funkcja: roznica = difftime( miasto, koniec ); nie ma prawa bytu. difftime przyjmuje dwie zmienne typu time_t, rzutowanie nic tu nie da. Istnieje jednak funkcja mktime . Funkcja ta przyjmuje strukturę tm i zwraca time_t. Musisz więc utworzyć nową zmienną i przypisać do niej wynik z funkcji mktime, która przyjmie strukturę tm, w tym wypadku zmienną miasto. Mniej więcej tak to powinno wyglądać: time_t t, koniec = 0, city = 0; struct tm * miasto = NULL; double roznica = 0; zegar( t );
miasto = localtime( & t ); city = mktime( miasto );
roznica = difftime( city, koniec ); cout << roznica; |
|
« 1 » |