Fahrstuhlsteuerung



  • jo hast recht habs hin bekommen jetzt läuft erstmal alles...



  • Geht auch ohne 2. Schleife:

    #include <iostream> // ohne .h
    #include <cstdlib>
    #include <ctime>
    
    using namespace std;
    
    void sleep( clock_t wait );
    
    int main(void)
    {
    	short aktuelleEtage, zielEtage;
    	double thoch, trunter;
    
    	cout<<"Etage(0...9): ";
    	cin>>aktuelleEtage;
    	cout<<"\nZiel-Etage: ";
    	cin>>zielEtage;        
    	thoch=(zielEtage-aktuelleEtage)*2.5;
    	trunter=(aktuelleEtage-zielEtage)*2.5;
    
    	for(; aktuelleEtage!=zielEtage; aktuelleEtage<zielEtage ? aktuelleEtage++ : aktuelleEtage--)
    	{
    		cout<<"\t";
    		cout<<aktuelleEtage;
    		sleep(500);
    		cout<<"\n";
    		if(aktuelleEtage==zielEtage) {
    			break;
    		}
    	}
    	cout<<"\t";
    	cout<<aktuelleEtage;
    
    	system ("Pause");
    }
    
    void sleep( clock_t wait ) // Die Funktion gehört auserhalb der Main-Funktion
    {
    	clock_t goal;
    	goal = wait + clock();
    	while( goal > clock() )
    		;
    }
    

    Um es einfach zu halten, solltest du aber vielleicht erstmal bei den 2 Schleifen bleiben.



  • ok danke 👍



  • hey ich nochmal, habe ein neues problem:und zwar möchte ich umgehen, dass ich bei jeder zahl die ich eingebe immer die return-taste drücken muss. Gibt es da eine anweisung, mit der man diesen Tastendruck erstetzen kann?



  • nichts plattformunabhängiges.

    btw: lies dir doch ma deinen post durch, bevor du auf absenden klickst...



  • OSKiel schrieb:

    hey ich nochmal, habe ein neues problem:und zwar möchte ich umgehen, dass ich bei jeder zahl die ich eingebe immer die return-taste drücken muss. Gibt es da eine anweisung, mit der man diesen Tastendruck erstetzen kann?

    Kleines Demo (gilt nur, wenn du conio.h nutzen kannst):

    int main()
    {
    	cout << "Zeichenweise Eingabe ohne Enter-Taste:" << endl;
    	for(;;) {
    		while(!kbhit()) {
    			char c=_getch();
    			cout << c;
    		}
    	}
    }
    


  • Hey leute, ich programmiere in meinem Betrieb auch so eine Steuerung, ich bin jetzt genau so weit und die Fahrstuhlsteuerung läuft, nur fehlt jetzt die Logik in der Steuerung.
    Wenn jemand z.B. vom 10. in 1. fährt und bei 7 noch einer drückt, der in 3 will, dann sollte der Fahrstuhl auch bei 7 anhalten, dann bei 3 und zum schluss erst bei 1

    also

    9-------1|
    --7---3--| /sollte zwischengeschoben werden können

    Wie könnte man so etwas realisieren? Habe mal was von einer Zähl/Prüfschleife gehört, aber weder mein Buch, noch das Internet gibt etwas verständliches darüber her? 😕

    PS: Habe das Buch "C++ Einführung und Professionelle Programmierung" von Ulrich Breymann, kennt ihr vielleicht noch empfehlenswerte/bessere Bücher zu C++ ?

    gruß Welle



  • So, jetzt auch registriert

    Sorry, ich habe einen Fehler in dem Text oben. Er sollte von der 10 starten, dann die 7 einsammeln und erst zur 1 und zum Schluss zur 3.
    Sonnst kommt die 10 ja nie unten an^^



  • Wellsee schrieb:

    Sonnst kommt die 10 ja nie unten an^^

    Warum 😕



  • Wellsee schrieb:

    So, jetzt auch registriert

    Sorry, ich habe einen Fehler in dem Text oben. Er sollte von der 10 starten, dann die 7 einsammeln und erst zur 1 und zum Schluss zur 3.
    Sonnst kommt die 10 ja nie unten an^^

    Wär doch sinnvoller, wenn er bis zur 1 durchfährt, aber zwischendurch bei allen gedrückten Nummern auf dem Weg anhält.



  • _matze schrieb:

    Wellsee schrieb:

    So, jetzt auch registriert

    Sorry, ich habe einen Fehler in dem Text oben. Er sollte von der 10 starten, dann die 7 einsammeln und erst zur 1 und zum Schluss zur 3.
    Sonnst kommt die 10 ja nie unten an^^

    Wär doch sinnvoller, wenn er bis zur 1 durchfährt, aber zwischendurch bei allen gedrückten Nummern auf dem Weg anhält.

    Eben, er darf nur nicht wieder hoch fahren solange er 1 nicht erreicht hat!



  • Das stimmt natürlich, so könnte man das auch lösen, ist auch irgendiwe logischer. 😃

    Müsste man das mit ner Zähl/Prüfschleife machen? Wenn ja, wie funktioniert diese Schleife, würde das gerne versthen, wenn ihr etwas postet 😉

    Falls jemand die lösung haben sollte, bitte dazu erklären 😋



  • Wellsee schrieb:

    Das stimmt natürlich, so könnte man das auch lösen, ist auch irgendiwe logischer. 😃

    Müsste man das mit ner Zähl/Prüfschleife machen? Wenn ja, wie funktioniert diese Schleife, würde das gerne versthen, wenn ihr etwas postet 😉

    Falls jemand die lösung haben sollte, bitte dazu erklären 😋

    Wie sieht denn dein bisheriger Versuch aus?



  • Das ist ja das Problem 😞

    Mein Buch gibt über die Zähl/Prüfschleife nichts her
    und wenn ich bei google suche, ist das einzige was ich finde, dieses Forum und meinen Post 😮

    Mein Pogramm sieht bisher so aus:

    //Aufzugsteuerung
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    //Befehl für Sleep 1.Teil
    void sleep( clock_t wait );
    
    int main(void)
    {
      //short benutzt, da ae und ze nur Werte 0 - 9 annehmen
      short ae, ze;
      //float, da thoch und trunter auch Dezimalen sein können
      float thoch, trunter;
    
      cout<<" Etage(0...9): ";
      //Anfangsetage eingeben
      cin>>ae; 
      cout<<"\n    Zieletage: ";
      //Zieletage eingeben 
      cin>>ze;         
      thoch=(ze-ae)*2.5; 
      trunter=(ae-ze)*2.5;
    
      if(ae<ze)
      {
        //Fahrzeit wird angezeigt
        cout<<"\n    Fahrdauer: "<<thoch<<"s\n\n\n";
        //Stockwerke werden alle 2,5 Sekunden angezeigt
        for(ae;ae<=ze;ae=ae+1)
        {
          cout<<" Etage: ";
          cout<<ae;
          sleep(2500);
          cout<<"\n";
        }
      }
      else
      {
        //Fahrzeit wird angezeigt
        cout<<"\n    Fahrdauer: "<<trunter<<"s\n\n\n";
        //Stockwerke werden alle 2,5 Sekunden angezeigt
        for(ae;ae>=ze;ae=ae-1)
        {
          cout<<" Etage: ";
          cout<<ae;
          sleep(2500);
          cout<<"\n";
        }
      }
    cout<<"\n Aussteigen!\n\n\n\n";
    
    system ("Pause");
    }
    
    //Befehl für Sleep 2.Teil
    void sleep( clock_t wait )
    {
       clock_t goal;
       goal = wait + clock();
       while( goal > clock() )
          ;
    }
    


  • Das ist nicht dein Programm, sondern das aus diesem Thread... 🙄



  • Ja genau, und da fehlt jetzt noch diese funktion, dass er auch noch zwischen durch anhält, einsammelt und rausschmeist 🙂

    Nur über Prüfschleifen ist nichts zu finden, gibts die vielleicht unter anderen namen?



  • _matze schrieb:

    Das ist nicht dein Programm, sondern das aus diesem Thread... 🙄

    Und so wie es aussieht, hat er noch nicht mal verstanden wie das Programm funktioniert, weil da noch was fehlt! Und das

    //Befehl für Sleep 1.Teil
    void sleep( clock_t wait );
    

    sieht auch nicht gerade so aus als wenn er Ahnung davon hätte was er da kopiert hat!
    Ach diese sch*** Hausaufgaben! 😃



  • Wellsee schrieb:

    Ja genau, und da fehlt jetzt noch diese funktion, dass er auch noch zwischen durch anhält, einsammelt und rausschmeist 🙂

    Nur über Prüfschleifen ist nichts zu finden, gibts die vielleicht unter anderen namen?

    Lies dir das hier bitte mal durch (und achte vor allem den ersten fettgrdruckten Satz): http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html

    Du musst schon wenigstens ein bisschen was selbermachen (und damit ist nicht C&P gemeint).



  • 1. Bin ich hier in dem Forum um zu verstehen, wie ich eine Fahrstuhlsteuerung programmieren, kann, da ich erst vor 2 wochen begonnen habe zu programmieren.

    2. Habe ich nicht nach einer Komplettlösung für meine Hausaufgaben gefragt... gehe ich noch zur Schule? Nein.

    3. Ist es schlimm, dass man die vorher geposteten Sachen übernimmt und sich eigene Komentare dazu schreibt um dies zu verstehen? 😮

    EEK schrieb:

    Und so wie es aussieht, hat er noch nicht mal verstanden wie das Programm funktioniert, weil da noch was fehlt!

    //Befehl für Sleep 1.Teil
    void sleep( clock_t wait );
    

    sieht auch nicht gerade so aus als wenn er Ahnung davon hätte was er da kopiert hat!

    Nein habe ich auch noch nicht ganz... deswegen frage ich euch 🙄

    Alos helft ihr nun oder müsst ihr mir vorhalten, das ich das nicht selber gemacht habe und es nicht verstehe 😮



  • Wellsee schrieb:

    1. Bin ich hier in dem Forum um zu verstehen, wie ich eine Fahrstuhlsteuerung programmieren, kann, da ich erst vor 2 wochen begonnen habe zu programmieren.

    Das ist ja auch ok so!

    Wellsee schrieb:

    2. Habe ich nicht nach einer Komplettlösung für meine Hausaufgaben gefragt... gehe ich noch zur Schule? Nein.

    Nein, aber du hast dir eine Komplettlösung von Jemand anders kopiert!

    Wellsee schrieb:

    3. Ist es schlimm, dass man die vorher geposteten Sachen übernimmt und sich eigene Komentare dazu schreibt um dies zu verstehen?

    Ja, weil wenn du noch keine Ahnung vom Programmieren hast, dann wirst du so nie verstehen wie es funktioniert!

    Wellsee schrieb:

    😮

    EEK schrieb:

    Und so wie es aussieht, hat er noch nicht mal verstanden wie das Programm funktioniert, weil da noch was fehlt!

    //Befehl für Sleep 1.Teil
    void sleep( clock_t wait );
    

    sieht auch nicht gerade so aus als wenn er Ahnung davon hätte was er da kopiert hat!

    Nein habe ich auch noch nicht ganz... deswegen frage ich euch 🙄

    Alos helft ihr nun oder müsst ihr mir vorhalten, das ich das nicht selber gemacht habe und es nicht verstehe 😮

    Kein Mensch wird dir hier was vorhalten wenn du ein bisschen Eigeninitiative zeigst und bei deinem eigenem Programm nicht weiter kommst!


Anmelden zum Antworten