C# týden C# týden
Pořádné programy s pořádnou klávesnicí zdarma. Více zde
Pouze tento týden sleva až 80 % na C# .NET

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

C a C++ C a C++ Odpočítávání času American English version English version

Aktivity (1)
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í
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 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.