Problem mit Schleife



  • Hallo!
    Ich habe folgendes Problem:
    Ich möchte, nachdem durch eine Tastaturabfrage ein Wert in eine Variable gespeichert wurde, eine Schleife ausführen, die diesen Wert verwendet. Nun ist dieser Schleife eine individuelle Zeit von 15-40 Sek. gesetzt, in der sie durchläuft, abhänig davon, welcher Wert in die Variable gespeichert wurde. Nun möchte ich aber, dass ich,während die Schleife läuft, auch wieder in die Tastaturabfrage gelange, ohne dass die Schleife aufhört zu arbeiten.
    Wer kann mir bei diesem Problem helfen? Bin blutiger Anfänger....
    Hier mein Code:

    #include <cstdlib>
    #include <iostream>
    #include <time.h>
    #include <windows.h>
    #include <winbase.h>
    using namespace std;
    long ThreadTwo(long lParam);
    long ThreadThree(long lParam);
    long ThreadFour(long lParam);
    
    int main(int argc, char *argv[])
    {
    
       int Haus ;
      int Burg ;
      int Schmiede ;
      int Hof ;
          int stufe[4]={Burg,Schmiede,Hof,Haus}; 
          stufe[0]=0;
          stufe[1]=0;
          stufe[2]=0;
          stufe[3]=0;
      int Haus_t = 60;
      int Burg_t = 40;
      int Schmiede_t = 20;
      int Hof_t = 15;
      int gebaeude[4]={Burg_t,Schmiede_t,Hof_t,Haus_t};
         main:
       int wahl;
       cout<<"0. Burg = 40 Sek. Stufe:"<<stufe[0]<<endl;
        cout<<"1. Schmiede = 20 Sek. Stufe:"<<stufe[1]<<endl;
          cout<<"2. Hof = 15 Sek. Stufe:"<<stufe[2]<<endl;
            cout<<"3. Haus = 60 Sek. Stufe:"<<stufe[3]<<endl;
    
       cin>>wahl;
    
       int i;
       int dauer;
       dauer= gebaeude[wahl];
    
         for(i=1;i<=dauer;i=i+1)
       {
                           int t_left;
                           t_left=dauer-i;
          cout<<t_left<<endl;
          if (i==dauer)
          {
    
      stufe[wahl]=stufe[wahl]+1;
      goto main;
    
    }
    
          Sleep(1000);
          system("cls");
    
       };
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Gruß
    hypersayyajin



  • Stichwort: threads, z.B.: boost.thread. ABER: wenn du wirklich blutiger anfänger bist, würde ich dir empfehlen, das Problem irgendwie anders zu lösen/zu umgehen/umzudefinieren, weil programmierung mit threads is nich ohne.



  • das würde ich ja geren..aber WIE?!



  • Hallo

    Was würdest du gerne? Mit Threads arbeiten, oder dein Programm umschreiben?

    chrische



  • was machen deine schleifen, die sollen nur eine gewisse "zeit" durchlaufen? dafür brauchst du keine threads. hau einfach alle deine schleifen an und frag sie zyklisch immer wieder ab, bis sie ihre aufgabe erledigt haben.

    dazu wär es wahrscheinlich sinnvoll die methoden in objekten zu kapseln. dann packst du alle deine objekte in nen container und dieser wird von nem scheduler verwaltet, der jeder darin enthaltenen methode immer wieder bisschen rechenzeit gewährt (sprich: ein funktionsaufruf).
    die methodem müssen sich dann nur merken, wann sie fertig sind.



  • vielen dank!
    aber wie bewerkstelliuge ich das? also das sie einfach weiterlaufen?
    ich komm echt nich weiter... 😞



  • Hallo

    Kannst du deine Fragen bitte etwas konkretisieren. Welchen Lösungsansatz möchtest du den jetzt weiter verfolgen?

    chrische



  • Das ist mir eig. egal. Lieber wäre mir natürlich die einfachere Variante.


Anmelden zum Antworten