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.