Budzik c++

0

Próbuje zrobić coś w stylu konsolowego budzika w c++. Co zrobić by 'cin' nie zatrzymywał całej pętli?

#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    int czasg;
    int czasm;
    cout << "Podaj godzinê :";
    cin >> czasg;
    cout << "Podaj minuty :";
    cin >> czasm;
    string haslo;
    SYSTEMTIME st;
    GetLocalTime(&st);
    for (;;)
    {
        int godzina = st.wHour;
        int minuta = st.wMinute;

        if (godzina == czasg && minuta == czasm)
        {
            cout << "alarm";
            cout << "wpisz haslo";

            Sleep(1000);
            cin >> haslo;
        }
    }
    exit(0);


    return 0;
}
1

Trudno powiedzieć, na podstawie tego kodu, po co Ci to haslo, ale do większości tego typu zadań będziesz się musiał bawić z wielowątkowością — jeden wątek obsługuje pętlę, drugi czeka na dane.

0

"haslo" jest mi potrzebna aby wyjść z pętli

#include <iostream>
#include <windows.h>

using namespace std;

int main() {
  int czasg;
  int czasm;
  cout << "Podaj godzinę :";
  cin >> czasg;
  cout << "Podaj minuty :";
  cin >> czasm;
  string haslo;
  SYSTEMTIME st;
  GetLocalTime(&st);
  for (;;) {
    int godzina = st.wHour;
    int minuta = st.wMinute;

    if (godzina == czasg && minuta == czasm) {
      cout << "alarm";
      cout << "wpisz haslo";

      Sleep(1000);
      cin >> haslo;
      if (haslo == "stop") continue;
    }
  }
  exit(0);

  return 0;
}
 
1

haslo jezeli odgadniesz to zrobi continue, czyli bedzie nie przerwie petli.
Jezeli chcialbys, zeby to dzialalo plynnie, to musisz pobawic sie z wielowatkowoscia (lub maszyna stanow)

0

Skoro tak to zamiast

 contiune; 

wpiszę tamexit(0);

 i zamknę cały program prawda ?
0

Możesz użyć instrukcji break i to wszystko co jest potrzebne do zatrzymania pętli.
Co do problemu, to faktycznie wielowątkowość tutaj rozwiąże go.

1 użytkowników online, w tym zalogowanych: 0, gości: 1