Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czas - sprawdzanie, wczytywanie, operacje

Ostatnio zmodyfikowano 2012-04-30 22:28
Autor Wiadomość
SeaMonster131
» 2012-04-26 12:35:55
Jedno pytanie, dlaczego jak masz zmienną godziny2 typu string oraz godziny3 też tego samego typu, to zastosowałeś rzutowanie?
godziny3 = static_cast < std::string >( godziny2 );
P-55373
Temes
Temat założony przez niniejszego użytkownika
» 2012-04-26 12:52:03
Nie wiem, nie łapię się w tym czasie... Nie wiem co zrobić, aby działało, więc próbuję wszystkiego :/
P-55377
Admixior
» 2012-04-26 13:52:12
Coś mi się wydaje że w ogóle nie łapiesz tego co tam masz.

godziny =( strftime( buffer, 80, "%H", timeinfo ) );
//ta funkcja zwraca liczbę przekopiowanych znaków do buffer(np 1)
//do godziny zapisze się ostatni bajt, czyli 1

puts( buffer );
//nie wiem co to robi...

godziny2 = godziny.substr();
//kopiujesz to co jest w godziny do godziny2
//po co w ogóle funkcja substr();
//po co w ogóle to kopiujesz( no... chyba że gdzieś później potrzebujesz)

godziny3 = static_cast < std::string >( godziny2 );
//kopiujesz to co jest w godziny do godziny2
//po co w ogóle rzutowanie
//po co w ogóle to kopiujesz( no... chyba że gdzieś później potrzebujesz)

w skrócie można te 2 ostatnie linie zapisać godziny3 = godziny2 = godziny;
o ile w ogóle to potrzebne...

później wypisujesz to co jest w godziny3  czyli znak np.0x01  co w kodowaniu konsoli jest białą minką lub znak 0x02 (czarna minka) o ile się nie myle.


Uno buffer zawiera jak się domyślam godziny w "char*" i to z niego trzeba skopiować.
Duo zobacz na tą funkcję na google. Możesz ją efektywniej wykorzystać (np od razu do bufora ładować hh:mm:ss po dwukropku lub jakkolwiek inaczej.
Po trzecie jak chcesz w prosty sposób posługiwać się czasem możesz też skorzystać z:
C/C++
SYSTEMTIME czas;
GetLocalTime( & czas );
cout << czas.wHour << ':' << czas.wMinute << ':' << czas.wSecond;

Jak będziesz chciał mieć te liczby w string'u to użyj to_string(...); (poczytaj na google na ten temat)
Jak będziesz chciał jeszcze inne rzeczy typu dzień tygodnia, dzień, miesiąc, rok... to zajrzyj jakie składniki ma ta struktura :)
P-55384
dominicuss
» 2012-04-26 14:09:13
Sprawdź funkcję GetTimeFormat(), zwraca c string, a nie strukturę może być przydatna, niżej przykład użycia.

C/C++
char func_time[ 6 ] = "14:01";
char sys_time[ 6 ];

GetTimeFormat( LOCALE_SYSTEM_DEFAULT, TIME_FORCE24HOURFORMAT, NULL, "hh':'mm", sys_time, 6 );
if( !strcmp( func_time, sys_time ) )
{
    //jesli sie zgadzaja wykonaj cos
}
P-55387
Temes
Temat założony przez niniejszego użytkownika
» 2012-04-26 14:29:59
"Jak będziesz chciał jeszcze inne rzeczy typu dzień tygodnia, dzień, miesiąc, rok... to zajrzyj jakie składniki ma ta struktura :)"

Właśnie o to mi chodziło, jak miałem ten kod wcześniej to mi pisało np. Tue May 11:38:20 2012 - chodziło mi o to, aby godziny (11) były w std::string godziny, minuty (38) były w std::string minuty, a sekundy (20) były w std::string sekundy.

I ten GetLocalTime chyba rozwiąże moje problemy, te powyżej :)
P-55389
Temes
Temat założony przez niniejszego użytkownika
» 2012-04-26 15:08:29
A mam jeszcze jedno pytanko, bo nie mam pomysłu jak to napisać w kodzie.
Moim zamierzeniem jest zrobić taki jakby start misji, czyli:
1. Jest godzina 10:13:50
2. Ktoś o tej godzinie (10:13:50) kliknął [START]
3. Misja trwa 30 sekund, czyli jeżeli ktoś wciśnie start o godzinie 10:13:50, to misja zakończy się o godzinie 10:14:20.
4. O tej godzinie (10:14:20)
Nagroda = 1

Nie wiem jak to ująć w kod... Niestety nie działa, ciągle 0 pokazuje, co jest źle?
C/C++
std::string godziny;
std::string minuty;
std::string sekundy;
std::string KoncoweGodziny;
std::string KoncoweMinuty;
std::string KoncoweSekundy;
SYSTEMTIME czas;
GetLocalTime( & czas );
godziny = czas.wHour;
minuty = czas.wMinute;
sekundy = czas.wSecond;
KoncoweGodziny = czas.wHour;
KoncoweMinuty = czas.wMinute;
KoncoweSekundy = czas.wSecond + 30;
if( godziny == KoncoweGodziny && minuty == KoncoweMinuty && sekundy == KoncoweSekundy ) {
    Nagroda = 1;
} else Nagroda = 0;

std::cout << Nagroda;
getch();

P-55398
hincu
» 2012-04-26 15:14:02
mala podpowiedz, mianowicie rzutowanie
P-55401
Admixior
» 2012-04-26 15:14:52
to co zrobiłeś jest po części dobrze.
Ale dobrze się domyślasz bo wtedy będzie 80 sek zamiast 20 i minuty później.
C/C++
int min = 0, sec = 50;
sec += 30;
if( sec >= 60 )
{
    sec -= 60;
    min++;
}

PS jakbyś chciał więcej niż 60s dodawać to musisz użyć operator %(reszty z dzielenia) w if-ie
//edit: o ile o to chodzi
P-55402
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona