Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Brauche Hilfe / Funktion time (0)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.11.2004, 15:46 Uhr
~wajo
Gast


Servus,
ich studiere im 1. Semester Mechatronik, d.h. hab erst seit ca. 2 Monaten mit C++ zu tun und habe ein kleines Problem bei einer Informatik-Übungsaufgabe. Kenne mich leider mit C++ noch nicht so gut aus . Aufgabe ist es, ein Ampelsimulationsprogramm zu schreiben, welches die jeweilige Ampelphase als Text am Bildschirm ausgibt (zsges. Datentyp enum mit mit gruen, gelb, rot und gelbrot). Dies soll über eine switch-Anweisung geschehen. Für die Dauer der Phasen soll die Funktion time (0), sowie der Header <ctime> verwendet werden. Mein Problem besteht darin, dass ich leider keine Ahnung hab, wie time (0) überhaupt zu verwenden ist, bzw. wie die Aufgabe gelöst werden kann. Wer kann mir helfen oder mir einige Tipps zur Verwendung von time (0) geben?
Schon mal vielen Dank im voraus!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.11.2004, 15:47 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


such mal ampelschaltung, da gabs schonmal was zu ampelschaltungen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.11.2004, 15:54 Uhr
~wajo
Gast


Hab gesucht. Hab aber leider nix gefunden !!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.11.2004, 16:24 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


schau mal hier:

www.fun-soft.de/showtopic.php?threadid=1219

zum warten gibt es funktionen wie usleep und/oder sleep

zu time siehe hier:

www.cplusplus.com/ref/ctime/time.html


Bearbeitung:

man könnte dann z.b wenn die ampel alle min schalten soll mit


C++:
time_t a,b;
time(&a);
while(true) {
  sleep(10); // 10s warten
  if(difftime(a,time(&b)) >= 60.0) // bei double's niemals == nehmen
  {
     a = b; // wieder 60sek warten vor nächstem schaltvorgang
     ampel.weiter(); // oder wie auch immer :=
     ampel.getZustand();
  }
}



theoretisch kann man das sleep weglassen, nur dann prüft er halt ununterbrochen und nicht alle 10s

ich bezieh mich hier auf die klasse aus dem link oben



--
class God : public ChuckNorris { };

Dieser Post wurde am 22.11.2004 um 16:29 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.12.2004, 15:03 Uhr
~CPluPlusFlo
Gast



Zitat von ~wajo:
Servus,
ich studiere im 1. Semester Mechatronik, d.h. hab erst seit ca. 2 Monaten mit C++ zu tun und habe ein kleines Problem bei einer Informatik-Übungsaufgabe. Kenne mich leider mit C++ noch nicht so gut aus . Aufgabe ist es, ein Ampelsimulationsprogramm zu schreiben, welches die jeweilige Ampelphase als Text am Bildschirm ausgibt (zsges. Datentyp enum mit mit gruen, gelb, rot und gelbrot). Dies soll über eine switch-Anweisung geschehen. Für die Dauer der Phasen soll die Funktion time (0), sowie der Header <ctime> verwendet werden. Mein Problem besteht darin, dass ich leider keine Ahnung hab, wie time (0) überhaupt zu verwenden ist, bzw. wie die Aufgabe gelöst werden kann. Wer kann mir helfen oder mir einige Tipps zur Verwendung von time (0) geben?
Schon mal vielen Dank im voraus!!


Servus,
Probiers mal damit:

C++:
#include <iostream.h>

//Simulation einer Ampelschaltung

class Ampel {

public:
    Ampel();
    Ampel(int zust);
    void weiter();
    void anschalten();
    int print();
    int zustand;
};


Ampel::Ampel() {

    zustand=6;
}

Ampel::Ampel(int zust) {

    zustand=zust;
}

void Ampel::anschalten(){

    zustand=6;

}

void Ampel::weiter(){

    if(zustand==6) {zustand=3;}
    else if (zustand==4) {zustand=0;}
    else {zustand++;}

}

int Ampel::print(){

    switch(zustand) {
    case 0: cout<<"Die Ampel ist gruen"<<endl;break;
    case 1: cout<<"Die Ampel ist gruen blinkend"<<endl;break;
    case 2: cout<<"Die Ampel ist gelb"<<endl;break;
    case 3: cout<<"Die Ampel ist rot"<<endl;break;
    case 4: cout<<"Die Ampel ist rot und gelb"<<endl;break;
    case 6: cout<<"Die Ampel ist gelb blinkend"<<endl;break;
    default: cout<<"Fehler"<<endl;
    }

return 0;}

int afunkt() {
      int a;
      Ampel A;
    
    A.print();

       do{
         cout<<endl<<"Die Ampel weiterschalten(1)"<<endl;
         cout<<"Die Ampel ausschalten = auf gelb blinkend stellen(2)"<<endl;
         cout<<"Den Zustand der Ampel zeigen(3)"<<endl;
         cout<<"Ins Hauptmenue(4)"<<endl;
             cin>>a;
     switch(a){
     case 1:A.weiter();cout<<endl;break;
     case 2:A.anschalten();cout<<endl;break;
     case 3:A.print();cout<<endl;break;
    }

    }while (a!=4);

       return A.print();
}

int nfunkt(){

     int ant,a,zust;

   cout<<endl<<"Sie wollen also eine neue Ampel erstellen:"<<endl<<endl;
   cout<<"Sie haben 2 Moeglichkeiten:"<<endl;
   cout<<"Eine Ampel im Zustand gelb blinkend erstellen (1)"<<endl;
   cout<<"Einen konkreten Zustand fuer die neue Ampel angeben (2)"<<endl;

        cin>>ant;cout<<endl;

   if (ant==1) {

      Ampel C; C.print();
         do{
            cout<<endl<<"Die Ampel weiterschalten(1)"<<endl;
            cout<<"Die Ampel ausschalten = auf gelb blinkend stellen(2)"<<endl;
            cout<<"Den Zustand der Ampel zeigen(3)"<<endl;
            cout<<"Ins Hauptmenue(4)"<<endl;
                    cin>>a;

        switch(a){
           case 1:C.weiter();cout<<endl;break;
           case 2:C.anschalten();cout<<endl;break;
           case 3:C.print();cout<<endl;break;
    }

         }while (a!=4);
         return C.print();
   }

   else if(ant==2) {
        
        cout<<"Geben Sie die Zahl fuer den jeweiligen Zustand ein:"<<endl<<endl;
        cout<<"0 = gruen"<<endl;
        cout<<"1 = gruen blinkend"<<endl;
        cout<<"2 = gelb"<<endl;
        cout<<"3 = rot"<<endl;
        cout<<"4 = rot+gelb"<<endl;
        cout<<"6 = gelb blinkend"<<endl;
        cout<<"Eingabe:";  
        cin>>zust;

        Ampel C(zust);
        
        cout<<endl; C.print();
    do{
        cout<<endl<<"Die Ampel weiterschalten(1)"<<endl;
        cout<<"Die Ampel ausschalten = auf gelb blinkend stellen(2)"<<endl;
        cout<<"Den Zustand der Ampel zeigen(3)"<<endl;
        cout<<"Ins Hauptmenue(4)"<<endl;
             cin>>a;

    switch(a){
      case 1:C.weiter();cout<<endl;break;
      case 2:C.anschalten();cout<<endl;break;
      case 3:C.print();cout<<endl;break;
    }

    }while (a!=4);
         return C.print();}
}

int main(){

    char amp;

    while(amp!='e'){
    
    cout<<"\n";
    cout<<"***Hauptmenue***"<<endl;
    cout<<"Ampel A bearbeiten (a)"<<endl;
    cout<<"Eine neue Ampel erstellen(n)"<<endl;
    cout<<"Exit (e)"<<endl;
    cin>>amp;
    
    cout<<"\n";
    
    if(amp=='a'||amp=='A') {afunkt();}
    else if (amp=='n'||amp=='N') {nfunkt();}
    }

    return 0;
}




Bearbeitung von typecast:
cpp-Tags gesetzt und ThWboard code aktiviert

Dieser Post wurde am 05.12.2004 um 15:29 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: