Ich benötige Hilfe , denn ich soll einen Fahrkartenautomat simulieren



  • Wenn das so gemeint ist, dann kannst du das ja so programmieren. Jetzt stellt sich eben nur die Frage, wo du nicht weiterkommst. Hast du bisher schon was geschrieben?



  • das was ich an befehlen kenne reicht im leben nicht dafür ich hatte erst 2 doppelstunden davor 0 vorkenntnisse, und immer einen fehlenden dozenten...



  • Hier mal ein Anfang, allerdings ziemlich umständlich geschrieben, wenn du also denn source code vorzeigen musst solltest du das ganze mal überarbeiten. Hab wahrscheinlich gegen ziemlich viele Programmierrichtlinien verstossen aber hab nich viel Zeit.Vielleicht kann dir das noch irgendjemand anders kommentiern oder so. Hoffe das funzt auch in Visual C++, habs nämlich mit dem Borland Builder 5 geschrieben.

    #include <stdio.h>
    #include <conio.h>
    
    void menu();
    void menu2();
    
    int auswahl, auswahl2;
    
    void main (void)
    {
     menu();
     menu2();
    }
    
    void menu(void)
    {
     gotoxy(30,3);
     textcolor(YELLOW);
     cprintf("Fahrkartenautomat");
     gotoxy(25,5);
     textcolor(WHITE);
     cprintf("Geben sie ihr Fahrziel an!");
     gotoxy(30,7);
     printf("Stuttgart = 1");
     gotoxy(30,8);
     printf("Berlin    = 2");
     gotoxy(30,9);
     printf("Hamburg   = 3");
     gotoxy(30,10);
     printf("Muenchen  = 4");
     gotoxy(28,12);
     printf("Ihre Auswahl: ");
     scanf("%i",&auswahl);
    }
    
    void menu2 (void)
    {
     if (auswahl == 1)
     {
      clrscr();
      gotoxy(30,3);
      textcolor(YELLOW);
      cprintf("Fahrkartenautomat");
      gotoxy(14,5);
      textcolor(WHITE);
      cprintf("Ihre Auswahl ist Stuttgart, welches Ticket benoetigen sie?");
      gotoxy(23,7);
      printf("Familien Ticket           = 1");
      gotoxy(23,8);
      printf("Schueler und Azubi Ticket = 2");
      gotoxy(23,9);
      printf("Erwachsenen Ticket        = 3");
      gotoxy(23,11);
      printf("Ihre Auswahl: ");
      scanf("%i",&auswahl2);
     }
     if (auswahl == 2)
     {
      clrscr();
      gotoxy(30,3);
      textcolor(YELLOW);
      cprintf("Fahrkartenautomat");
      gotoxy(14,5);
      textcolor(WHITE);
      cprintf("Ihre Auswahl ist Berlin, welches Ticket benoetigen sie?");
      gotoxy(23,7);
      printf("Familien Ticket           = 1");
      gotoxy(23,8);
      printf("Schueler und Azubi Ticket = 2");
      gotoxy(23,9);
      printf("Erwachsenen Ticket        = 3");
      gotoxy(23,11);
      printf("Ihre Auswahl: ");
      scanf("%i",&auswahl2);
     }
      if (auswahl == 3)
     {
      clrscr();
      gotoxy(30,3);
      textcolor(YELLOW);
      cprintf("Fahrkartenautomat");
      gotoxy(14,5);
      textcolor(WHITE);
      cprintf("Ihre Auswahl ist Hamburg, welches Ticket benoetigen sie?");
      gotoxy(23,7);
      printf("Familien Ticket           = 1");
      gotoxy(23,8);
      printf("Schueler und Azubi Ticket = 2");
      gotoxy(23,9);
      printf("Erwachsenen Ticket        = 3");
      gotoxy(23,11);
      printf("Ihre Auswahl: ");
      scanf("%i",&auswahl2);
     }
      if (auswahl == 4)
     {
      clrscr();
      gotoxy(30,3);
      textcolor(YELLOW);
      cprintf("Fahrkartenautomat");
      gotoxy(14,5);
      textcolor(WHITE);
      cprintf("Ihre Auswahl ist Muenchen, welches Ticket benoetigen sie?");
      gotoxy(23,7);
      printf("Familien Ticket           = 1");
      gotoxy(23,8);
      printf("Schueler und Azubi Ticket = 2");
      gotoxy(23,9);
      printf("Erwachsenen Ticket        = 3");
      gotoxy(23,11);
      printf("Ihre Auswahl: ");
      scanf("%i",&auswahl2);
     }
    }
    

    mfG, Anfänger01 (und jetzt schaut euch meine Frage an, bitte is sehr dringend! 🙂 )



  • ich hab den Code mal ein bisschen umgeschrieben. Ist kürzer und vrhält sich fast genauso. Ist natürlich noch nicht fertig...

    #include <iostream> 
    #include <string>
    using namespace std;
    
    int ziel(); 
    int ticket(int); 
    
    int main(void) 
    { 
        int auswahl;
    
        auswahl = ziel(); 
        ticket(auswahl); 
    } 
    
    int ziel(void) 
    { 
        int auswahl;
    
        cout << "Fahrkartenautomat\n" << endl; 
        cout << "Geben sie ihr Fahrziel an!" << endl;  
    
        cout << "Stuttgart = 1" << endl
             << "Berlin    = 2" << endl
             << "Hamburg   = 3" << endl
             << "Muenchen  = 4" << endl;
    
        cout << "Ihre Auswahl: ";
        cin >> auswahl; 
    
        return auswahl; 
    } 
    
    int ticket(int auswahl) 
    { 
        string reiseziel;
    
        switch(auswahl)
        {
        case 1:
            reiseziel = "Stuttgart";
            break;
    
        case 2:
            reiseziel = "Berlin";
            break;
    
        case 3:
            reiseziel = "Hamburg";
            break;
    
        case 4:
            reiseziel = "Muenchen";
            break;
        }
    
      cout << "\n\nFahrkartenautomat" << endl  
           << "Ihre Auswahl ist "<< reiseziel << ", welches Ticket benoetigen sie?" << endl 
           << "Familien Ticket           = 1" << endl 
           << "Schueler und Azubi Ticket = 2" << endl 
           << "Erwachsenen Ticket        = 3" << endl 
           << "\nIhre Auswahl: " << endl; 
      cin >> auswahl;
    
      return auswahl;
    
    }
    


  • danke das läuft ja wenigstens schon einmal .)



  • Wenn das so ist wie du es schilderst dann machst du das so:

    cout << "Taste drücken um Fahrkarte zu erhalten.\r\n";
    getch();
    cout<<"Danke für die vollautomatisierte Entnahme ihrer Fahrkarte!";
    getch();
    

    und fertig.
    Sollte ihm das nicht reichen, dann würd ich mich stumpf beim Schulleiter oder wer da sonst noch ist beschweren, weil das nicht angehen kann sowas.
    Du wirst nie einen Job als Fachinformatiker finden, wenn dir nicht einmal beigebracht wird wie du soetwas vergleichsweise einfaches programmierst bzw nicht einmal eine klar formulierte Aufgabe erhälst.
    Also wenn du auf den Kram gar eine Note bekommen solltest, dann werde ich definitiv in den nächstbesten Besen beissen oder, noch schlimmer, gar anfangen von Pisa, armes Deutschland und früher zu reden.(und das mit 21 arg ^^)
    Ich mein das die Schüler bei Umschulungen teilweise keine Lust haben und dazu mehr oder weniger gezwungen werden hab ich ja schon öfter gehört, aber sowas...



  • Ich muß gestehen, ich bin müde geworden mich über sowas noch mehr aufzuregen. Es ist nicht nur im Fach Anwendung do , andere Kollegen sind auch nicht besser. Ich finde es nur ätzend, das mein Arbeitsamt um 8500€ erleichtert wird, und ich im prinzip nix davon habe. ....

    Ich bringe mir schon ne menge selbst ebi, aber alles kann ich auch nicht. nochmals vielen vielen dank an alle. Hat jemand noch nen quellcode betreffend des betrages? das fehlt mir da noch, bzw wrde ich ja auch alleine machen kann mir jemand ansätze vermitteln?

    tobi



  • den befehl getch() kennt c++ nicht?!



  • tobiasl schrieb:

    den befehl getch() kennt c++ nicht?!

    im namespace std: cin.get();



  • ichhalt schrieb:

    tobiasl schrieb:

    den befehl getch() kennt c++ nicht?!

    im namespace std: cin.get();

    hilfe was ist der namespace?



  • tobiasl schrieb:

    ichhalt schrieb:

    tobiasl schrieb:

    den befehl getch() kennt c++ nicht?!

    im namespace std: cin.get();

    hilfe was ist der namespace?

    http://www.schornboeck.net/ckurs/namespace.htm 😉



  • ok das habe ich nun soweit verstanden, aber wenn ich die letzen 2 zeilen einfüge und kompilieren will kommt: error C2065: 'getch' : nichtdeklarierter Bezeichner



  • hm für getch(wartet auf Eingabe eines Zeichens) würdest du conio.h includen müssen, was aber weder C noch C++ Standard ist(funktionert nur fast überall)... nur frag ich mich ob die Dozenten das wissen und explizit erwähnt haben das nur reiner Standard verwendet werden darf.

    Aber cin.get() tuts auch ebensogut und ist Standard, nehm das lieber.



  • Hi,
    ein kleines Beispiel,
    ich hoffe es heute nacht noch einmal verbessern zu können.
    Sind wahrscheinlich viele Fehler drinn.

    #include <iostream>
    #include <cstdlib>
    #include <string>
    bool FahrkarteKaufen();    
    bool FahrkarteKaufenDialog(string,int);
    
    int main(int argc, char *argv[])
    {
    enum{
    FAHRKARTE_KAUFEN = 1,
    EXIT =  2
    };
    
    int event;
    bool GoOn=true;
    while(GoOn==true){
        std::cout <<"[1] Fahrkarte kaufen"<< std::endl
                  << "[2] Beenden"<< std::endl;
        std::cin >> event;
            switch(event){
            case FAHRKARTE_KAUFEN :
                FahrkarteKaufen();
                break;
            case EXIT:
                GoOn=false;
                break;
            default:
                std::cout << "Geben sie ein akzeptiertes Zeichen ein!"<<
                std::endl;
                break;
            }
    }
      std::cin.get();
      return 0;
    }
    
    bool FahrkarteKaufen(){
    std::cout << "Fahrkartenkaufen: "<<std::endl<<std::endl
              << "[1]Muenchen"<<std::endl
              << "[2]Berlin"<<std::endl
              << "[3]Hamburg"<<std::endl
              << "[4]Koeln"<<std::endl
              << "[5]Exit"<<std::endl
              << std::endl;
    
    std::cin.clear();
    enum{
    Muenchen = 1,
    Berlin   = 2,
    Hamburg  = 3,
    Koeln    = 4,
    Exit     = 5
    };
    
    int Auswahl;
    std::cin >>Auswahl;
    switch(Auswahl){
        case Muenchen:
        FahrkarteKaufenDialog("Muenchen",100);
        break;
        case Berlin:
        FahrkarteKaufenDialog("Berlin",100);
        break;
        case Hamburg:
        FahrkarteKaufenDialog("Hamburg",100);
        break;
        case Koeln:
        FahrkarteKaufenDialog("Koeln",100);
        break;
        case Exit:
        exit(0);
        break;
        default:
        std::cout << "Geben sie einen akzeptierten wert ein!"<<std::endl;
        break;
    }
    
    std::cin.clear();
    std::cin.get();
    return true;
    }
    
    bool FahrkarteKaufenDialog(string Zielort,int Preis)
    {
        std::cout << "Wollen sie die Fahrkarte nach: " << Zielort 
                  << " fuer " << Preis << " Euro"
                  << " kaufen? " << std::endl << std::endl
                  << "[Y]ES" << std::endl
                  << "[N]O"  << std::endl;
        char eingabe;
        std::cin >>eingabe;
        if(eingabe=='Y')
        {
        std::cout << "Betaetigen sie eine Taste um die Fahrkarte zu erhalten"
                  << std::endl;
                  std::cin.clear();
                      if(cin.get()){
                      std::cout << "Hier ist ihre Fahrkarte!";
                      }
        }
    
        else
        return false; 
    }
    

    MfG Max



  • warum schreibst du

    using namespace std;
    

    aber schreibst weiter unten

    std::cin >> ...
    


  • Operator++ schrieb:

    warum schreibst du

    using namespace std;
    

    aber schreibst weiter unten

    std::cin >> ...
    

    Sorry, das generiert mein Dev-C++ immer wenn ich ein Konsolen-Projekt erstelle
    und ich vergesse es oft zu löschen. -Ich habe es editiert.

    MfG Max



  • cool auch das funktioniert soweit.... was noch wichtig wäre wäre ja der geldeinwurf ausgabe des möglichen rückgeldes und halt der ausdruck auf lpt1

    ich schwöre euch eins: sobald ich dieses projekt überstandne habe, und ich die leistungskonferenz auch überlebe hänge ich bei der schulleitung....

    und euch gebe ich einen aus:) danke muß ich wirklich mal an dieser stelle sagen, selten ein forum erlebt wo einem newbie so schnell geholfen wird!



  • tobiasl schrieb:

    ...und halt der ausdruck auf lpt1

    in C kann man das doch ganz einfach mit file* fopen und printf machen, geht das in Standard-C++ auch?



  • Prinzipiell geht alles, was in C geht, auch in C++.....



  • Ok,
    es ist nicht gut getestet und es sind sicher Bugs drinn:

    #include <iostream>
    #include <cstdlib>
    #include <string>
    using namespace std;
    bool FahrkarteKaufen();    
    bool FahrkarteKaufenDialog(string,int);
    bool GeldeinWurf(int GeldMenge,int Preis,int &Rueckgabewert);
    
    int main(int argc, char *argv[])
    {
    enum{
    FAHRKARTE_KAUFEN = 1,
    EXIT =  2
    };
    
    int event;
    bool GoOn=true;
    while(GoOn==true){
        std::cout <<"[1] Fahrkarte kaufen"<< std::endl
                  << "[2] Beenden"<< std::endl;
        std::cin.sync();
        std::cin.clear();
        std::cin >> event;
            switch(event){
            case FAHRKARTE_KAUFEN :
                FahrkarteKaufen();
                break;
            case EXIT:
                GoOn=false;
                break;
            default:
                std::cout << "Geben sie ein akzeptiertes Zeichen ein!"<<
                std::endl;
                break;
            }
    }
      std::cin.get();
      return 0;
    }
    
    bool FahrkarteKaufen(){
    std::cout << "Fahrkartenkaufen: "<<std::endl<<std::endl
              << "[1]Muenchen"<<std::endl
              << "[2]Berlin"<<std::endl
              << "[3]Hamburg"<<std::endl
              << "[4]Koeln"<<std::endl
              << "[5]Exit"<<std::endl
              << std::endl;
    
    std::cin.clear();
    enum{
    Muenchen = 1,
    Berlin   = 2,
    Hamburg  = 3,
    Koeln    = 4,
    Exit     = 5
    };
    
    int Auswahl;
    std::cin >>Auswahl;
    switch(Auswahl){
        case Muenchen:
        FahrkarteKaufenDialog("Muenchen",150);
        break;
        case Berlin:
        FahrkarteKaufenDialog("Berlin",200);
        break;
        case Hamburg:
        FahrkarteKaufenDialog("Hamburg",110);
        break;
        case Koeln:
        FahrkarteKaufenDialog("Koeln",180);
        break;
        case Exit:
        exit(0);
        break;
        default:
        std::cout << "Geben sie einen akzeptierten wert ein!"<<std::endl;
        break;
    }
    
    std::cin.clear();
    std::cin.get();
    return true;
    }
    
    bool GeldeinWurf(int GeldMenge,int Preis,int &Rueckgabewert){
        if(GeldMenge>=Preis )
        {
        Rueckgabewert = ( GeldMenge - Preis );
        return true;
        }
        return false;   
    }
    
    bool FahrkarteKaufenDialog(string Zielort,int Preis)
    {
        std::cout << "Wollen sie die Fahrkarte nach: " << Zielort 
                  << " fuer " << Preis << " Euro"
                  << " kaufen? " << std::endl << std::endl
                  << "[Y]ES" << std::endl
                  << "[N]O"  << std::endl;
        char eingabe;
        std::cin >>eingabe;
        if(eingabe=='Y')
        {
        std::cout <<"Werfen sie bitte"<<Preis<< " Euro ein" <<std::endl; 
        int Eingeworfen;
        std::cin.clear();
        std::cin >> Eingeworfen;
    
        int Rueckgabe;
        bool isTrue; 
             isTrue = GeldeinWurf(Eingeworfen,Preis,Rueckgabe);
    
        if(isTrue==true)
        {
        std::cout << "Ihr rueckgeld betraegt: "<<Rueckgabe<<" Euro"<<std::endl;
        }
    
        else if(isTrue==false){
        std::cout << "Sie haben nicht das benoetigte Geld eingeworfen!"<<std::endl;
        return false;
        }
    
        std::cout << "Betaetigen sie eine Taste um die Fahrkarte zu erhalten"
                  << std::endl;
                  std::cin.clear();
                      if(cin.get()){
                      std::cout << "Hier ist ihre Fahrkarte!";
                      }
        }
    
        else{
        return false; 
        }
    }
    

    Drucken kann es noch nicht.
    -Dazu schau ich morgen in der Konsolen FAQ,
    soll es auf Windows laufen?

    MfG Max


Anmelden zum Antworten