Witam. Nudziło mi się w nocy to napisałem sobie prostą interpretację stopera w C++.
Mój problem polega na tym, że liczba godzin przy pierwszej sekundzie zwiększa się z niewiadomych powodów do 1, zamiast pozostać zerem do czasu osiągnięcia przez program 60 minut. Kombinuję już 20 minut i nie mogę znaleźć błędu. Konstruktor Stoper jasno deklaruje zmienną hours na 0, więc nie wiem o co chodzi. Dziękuję za odpowiedzi.
#include <iostream>
#include <cstdlib>
#include <windows.h>
using namespace std;
class Stoper
{
private:
short hours;
short minutes;
short seconds;
public:
Stoper()
{
short hours=0;
short minutes=0;
short seconds=0;
}
void seconds_count()
{
if (seconds >= 10)
{
cout<<seconds;
}
else
{
cout<<0<<seconds;
}
seconds++;
}
void minutes_count()
{
if (minutes >= 10)
{
cout<<minutes;
}
else
{
cout<<0<<minutes;
}
if (seconds >= 60)
{
minutes+=1;
seconds=0;
}
}
void hours_count()
{
if (hours >= 10)
{
cout<<hours;
}
else
{
cout<<0<<hours;
}
if (minutes >= 60)
{
hours+=1;
minutes=0;
}
}
void time_count()
{
system("cls");
hours_count();
cout<<":";
minutes_count();
cout<<":";
seconds_count();
Sleep(1000);
}
};
int main()
{
Stoper stoper1;
for(;;)
{
stoper1.time_count();
}
return 0;
}