• 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ń

VPS Starter Arubacloud
0 głosów
428 wizyt
pytanie zadane 14 czerwca 2016 w C i C++ przez zkkf56 Dyskutant (8,710 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,970 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,650 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 Dyskutant (8,710 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,400 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 Ekspert (212,630 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ź 548 wizyt
pytanie zadane 11 października 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)
+1 głos
2 odpowiedzi 353 wizyt
0 głosów
1 odpowiedź 235 wizyt

92,452 zapytań

141,262 odpowiedzi

319,082 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...