Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

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. června 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. června 15:12
Avatar
B42P6
Člen
Avatar
Odpovídá na Nela Ondráčková
B42P6:21. června 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. června 15:38
'long long long' is too long for GCC
Avatar
Odpovídá na B42P6
Nela Ondráčková:21. června 20:37

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

 
Nahoru Odpovědět 21. června 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.