Budzik c++

Qrdegrabarz
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:3
0

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

Kopiuj
#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;
}
edytowany 5x, ostatnio: kq
Althorion
Nie no, fajnie że wrzuciłeś kod, ale tutaj nie ma ani cin, ani pętli, więc do Twojego pytania to tak trochę nie bardzo pasuje…
Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:około godziny
  • Postów:1605
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.

edytowany 1x, ostatnio: Althorion
Qrdegrabarz
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:3
0

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

Kopiuj
#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;
}
 
edytowany 2x, ostatnio: Qrdegrabarz
fasadin
zobacz jak Twoj post wyglada. Miej troche szacunku dla ludzi ktorzy poswiecaja czas by Ci pomoc.
Qrdegrabarz
A co mam zrobić by "mieć szacunek" ? Nie wiem co zrobiłem nie tak :/
fasadin
1. Formatowanie kodu jest beznadziejne uzyj tego http://format.krzaq.cc/ 2. Wstaw to w znaczniki code=cpp
Qrdegrabarz
Ok teraz zauważyłem opcje dodani kodu źródłowego dziękuje ;)
fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
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)

edytowany 1x, ostatnio: fasadin
Qrdegrabarz
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:3
0

Skoro tak to zamiast

Kopiuj
 contiune; 

wpiszę tamexit(0);

Kopiuj
 i zamknę cały program prawda ?
edytowany 1x, ostatnio: Qrdegrabarz
fasadin
przeciez zawsze mozesz sprobowac, nic Ci sie nie stanie ;)
Qrdegrabarz
aktualnie nie mam jak tego sprawdzić :D. Sprawdzę w jak będę w domu ;)
Munvik
  • Rejestracja:ponad 9 lat
  • Ostatnio:prawie 5 lat
  • Postów:27
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.