• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmniejszanie wartości zmiennej o 1 co 1 dzień

0 głosów
170 wizyt
pytanie zadane 14 czerwca 2016 w C i C++ przez zkkf56 Mądrala (7,310 p.)

Witam,

Tak jak w temacie. Czy da się zrobić (w prosty sposób) aby zmienna zmniejszała się o 1 co 1 dzień ?

Np. gdy mamy zmienną

int dzien=5;

to czy aby jutro ta zmienna była równa 4?

 

 

Wiem że na pewno da się to zrobić ale w pewnie bardzo trudny sposób, więc czy dało by się to zrobić łatwo?

Szukałem w googlach ale nic nie znalazłem

4 odpowiedzi

0 głosów
odpowiedź 14 czerwca 2016 przez Bravo555 Gaduła (3,990 p.)
wybrane 15 czerwca 2016 przez zkkf56
 
Najlepsza

Funkcja sleep jest o tyle złym pomysłem, że blokuje kod i nie możesz w nim nic robić, kiedy jest wywoływana ta funkcja. Jeżeli chcesz, żeby cały kod zajmował się tylko tą zmienną, to możesz go zostawić. Jeżeli twój program oprócz tego jeszcze coś robi, to polecam np. zamknąć program w nieskończonej pętli i z każdym krokiem sprawdzać datę, jeżeli się zmieniła, to zapisać nową, żeby można było porównywać następny dzień i zdekrementować zmienną.

int zmienna = 5; // ta zmienna dekrementujemy

int day = 1;

while(true)
{
    int currentDay = getDateInDays();
    if(currentDay > day) {
        day = currentDay;
        zmienna--;
    }

    // w tej czesci petli mozesz wykonywac inne zadania
}

(Funkcja getDateInDays nie istnieje. Znajdź odpowiednią funkcję, która zwraca aktualną datę i użyj jej tutaj, oczywiście uwzględniając, że zwróci ona jakiś obiekt lub czas UNIXowy.)

Oczywiście można to pewnie jakoś ulepszyć, to już zostawiam Tobie.

+1 głos
odpowiedź 14 czerwca 2016 przez Ivan Maniak (60,950 p.)

Pewnie, że się da.

int dzien = 5;
sleep(1000 * 60 * 60 * 24);
dzien--;

A jeżeli potrzebujesz czegoś "lepszego" to możesz to zrobić na wiele sposobów. Na przykład utworzyć plik i w nim zapisać zmienną oraz datę zapisania tej zmiennej. Przy każdym odpaleniu porównujesz datę z aktualną i masz ilość dni, która upłynęła.

komentarz 14 czerwca 2016 przez zkkf56 Mądrala (7,310 p.)
Dzięki nie pomyślałem o tym :D ale myślałem o użyciu funkcji Sleep :).
+1 głos
odpowiedź 14 czerwca 2016 przez Avernis Nałogowiec (27,070 p.)

Możesz  to zrobić bez użycia Sleep. Pobierasz czas unixowy. Następnie obliczasz: dzień ma 86400s. Jak wiemy czas w c++ jest w milisekundach więc mnożysz to razy 1000. Na koniec sprawdzasz, czy czas unixowy jest większy lub równy czasowi który pobrałeś + 86400000. Jeśli znasz się na plikach i zapisie ich  to spokojnie zrobisz odejmowanie zmiennej co 1 dzień nawet przy wyłączonym kompie.

 

+1 głos
odpowiedź 14 czerwca 2016 przez Ehlert Mędrzec (165,080 p.)

O wiele bardziej rozwojowe byłoby poczytanie i pierwsze kroki z std::thread, niżeli funkcja Sleep.

Podobne pytania

0 głosów
1 odpowiedź 69 wizyt
pytanie zadane 11 października 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (10,860 p.)
0 głosów
1 odpowiedź 59 wizyt
pytanie zadane 22 sierpnia 2016 w SQL, bazy danych przez Pieczenieg Początkujący (300 p.)
0 głosów
1 odpowiedź 75 wizyt
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

64,868 zapytań

111,331 odpowiedzi

234,217 komentarzy

46,733 pasjonatów

Przeglądających: 223
Pasjonatów: 7 Gości: 216

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...