Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Odpočítávání času

Aktivity
Avatar
Nela Ondráčková:21.6.2018 15:12

Ahoj,
snažím se v C++ vytvořit program pro odpočítávání. Zadala jsem ho zatím na 10 sec, ale problém je, že mi sice program odpočítá čísla od 10 do 0, ale za sekundu vypíše nespočet čísel místo toho, aby za 1 sekundu napsal jen jedno.

Zkusil jsem:

#include <iostream>
#include <ctime>
int main()
{
using namespace std;
int zbytek=0;
int secs=10;
clock_t delay = secs * CLOCKS_PER_SEC;
clock_t start= clock();
do
{
    zbytek=(delay - (clock()))/ CLOCKS_PER_SEC;
    cout <<zbytek<<endl;
}
    while(clock()- start < delay);
    cout <<"konec";
return 0;
}

Chci docílit: Jak to můžu napravit?

 
Odpovědět
21.6.2018 15:12
Avatar
B42P6
Člen
Avatar
Odpovídá na Nela Ondráčková
B42P6:21.6.2018 15:38

Ahoj, ten cyklus beží po celý čas kým neuplynie 10 sekúnd. To znamená že vypisuje stále dookola premennú zbytek. Musíš použíť nejakú podmienku, aby sa to vypísalo iba raz za sekundu.
Napr.

do
{
    int novy_zbytek=(delay - (clock()))/ CLOCKS_PER_SEC;
    if (zbytek!=novy_zbytek)
    {
            cout <<zbytek<<endl;
            zbytek=novy_zbytek;
    }
}while(clock()- start < delay);

Tak či tak, toto je taký hlúpy spôsob na časovač, všimni si zataženie procesora keď to spustíš. Lepšie by bolo použiť funkciu:

#include <chrono>
#include <thread>
.....
std::this_thread::sleep_for(std::chrono::milliseconds(x));
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
21.6.2018 15:38
'long long long' is too long for GCC
Avatar
Odpovídá na B42P6
Nela Ondráčková:21.6.2018 20:37

Díky moc :) radu si vezmu k srdci.

 
Nahoru Odpovědět
21.6.2018 20:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.