Ich benötige Hilfe , denn ich soll einen Fahrkartenautomat simulieren
-
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
-
Hi Max,
uff damit hätt ich jetzt nicht gerechnet......
also es läuft bis zu dem punkt fahrkarte kaufen yes no wenn ich y für yes drücke springt er danach wieder zur main funktion zurück fahrkarte kaufen 1 beenden 2Also die aufgabe lautet nur als konsolenanwendung, ich würde es aber dennoch gerne einmal in windows lauffähig sehen, und werde mich mit diesem quellcode und meinen bestellten c++ büchern hinsetzen und lesen so dass ich deinen quellcode auch verstehe. ... denn ich will ja mal anwendungsentwickler werden( ich hoffe das ich bald was lernen denn ich habe nur 18 monate im gegensatz zu anderen die 3 jahre haben )
-
Hab ich irgendwas nicht mitbekommen? Seit wann werden hier komplette Hausaufgaben gelöst?
Sorry, aber das riecht doch schwer nach einem Fake: "Wenn ich diese Aufgabe nicht habe, kann ich einpacken!"
Richtig so. Kräftig auf die Tränendrüse drücken, dann mutiert auch das hier zum Hausaufgabenforum.@tobiasl: Falls das doch kein Fake sein sollte, bedenke bitte: Wenn du diese Aufgabe nicht alleine löst, wie willst du dann später als Programmierer oder Fachinformatiker Probleme lösen?
Wenn die Dozenten krank sind, und dieser Stoff so wichtig ist wie du sagst, dann setzt man sich in den daraus resultierenden Freistunden einfach hin und probiert selbst ein wenig aus. Am besten eignet sich dafür ein gutes Buch.
-
@cd9000 ich will dir gerne mal kurz ein statement liefern :
Wir sind die erste IT gruppe die statt 21 monate nur noch 18 Monate zur verfügung hat, ferner hat das Arbeitsamt Hamburg im Dezember 2003 mitgeteilt das es 2004 keine umschulungen ( bildungsgutscheine) mehr geben wird. Diese Tendenz zeichnete sich bereits im Oktober letzten jahres ab, bestätigte sich also. Daraufhin wurde in unserme Bildunszentrum die anzahl der dozenten um die hälfte verkürzt. so das ist fakt ... daraus resultiert die demotivation der restlichen dozenten durch krankheit. kannst du mir vieleicht mal sagen wie ich da noch ne umschulung hinbekommen soll? ich selbst mache mir gedanken wie ich das schaffen soll, denn die prüfung vor der ihk bleibt die selbe.
Ich habe aber auch noch 9 andere Fächer zu schaffen, wobei ich nur 2 doppelstunden an einem freitag in programmierung habe und ich habe meine umschulung am 01.12. begonnen und hatte érst 3 freitage programmierung, und auch da nichts produktives. Und jetzt kommen die sogenannten leistungskonferenzen wo halt geschaut werden soll passt das oder passt das nicht, aber das wir kaum unterricht hatten interessiert keinen....also wenn du das immer noch als fake bezeichnest so ist das deine meinung, mir ist jedenfalls der spaß vergangen und hier herrscht bei mir eher nackte panik als den drang das mir jemand die "hausaufgaben" machen soll....
-
Hmmm... das ist vielleicht doch kein Fake (auch aus anderen Gründen als das letzte Posting).
In dem Fall ziehe ich meine Anschuldigung zurück.Allerdings finde ich trotzdem, dass man nicht ganze Aufgaben lösen lassen sollte. Auch aus rein praktischen Gründen: Wenn einer der Dozenten hier ins Forum kommt, sieht er evtl. den kompletten Quellcode, den du eingereicht hast.
-
tobiasl schrieb:
also es läuft bis zu dem punkt fahrkarte kaufen yes no wenn ich y für yes drücke springt er danach wieder zur main funktion zurück fahrkarte kaufen 1 beenden 2
Du musst ein großes Y eingeben, dann geht es.
MfG Max
-
stimmt...dann geht es , aber was muß ich nun machen um den farhschein auf den drucker zu bekommen?
-
Master_Max schrieb:
tobiasl schrieb:
also es läuft bis zu dem punkt fahrkarte kaufen yes no wenn ich y für yes drücke springt er danach wieder zur main funktion zurück fahrkarte kaufen 1 beenden 2
Du musst ein großes Y eingeben, dann geht es.
MfG Max
if((eingabe=='Y')||(eingabe=='y'))
-
Ich denke nich das dein Lehrer meint du sollst den fahrschein wirklich ausdrucken sondern nur auf dem Bildschirm ausgeben,oder. Denn das wäre nun wirklich ein bisschen zu anspruchsvoll denke ich mal.
mfG, Anfänger01
-
In der alten Version war drucken noch nicht implementiert.
In der aktuellen sollte es gehen, geht allerdings auf meinem PC hier nicht,
testet es einmal:#include <iostream> #include <cstdlib> #include <string> #include <fstream> bool FahrkarteKaufen(); bool FahrkarteKaufenDialog(std::string,int); bool GeldeinWurf(int GeldMenge,int Preis,int &Rueckgabewert); bool SchreibeInDatei(std::string,int); bool Drucke(); 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(std::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 rückgeld 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(std::cin.get()){ SchreibeInDatei(Zielort,Preis); Drucke(); std::cout << "Hier ist ihre Fahrkarte!"; } } else{ return false; } } bool SchreibeInDatei(std::string FahrkartenInfo,int GeldBetrag) { std::ofstream Datei("FahrkartenAutomat.txt"); Datei.open("FahrkartenAutomat.txt"); Datei << FahrkartenInfo << std::endl << GeldBetrag << std::endl; Datei.close(); return true; } bool Drucke() { std::ifstream Datei ( "FahrkartenAutomat.txt" ); std::ofstream Drucker ( "LPT1" ); if ( Datei == 0 || Drucker == 0 ) { std::cerr << "Datei und//oder Drucker konnten nicht geöffnet werden"; return false; } else { while ( Datei.eof() != true ) { Drucker.put ( Datei.get() ); } Drucker.put ( '\f' ); Drucker.close (); Datei.close (); } return true; }
@cd9000: Du hast völlig Recht das wir hier keine Hausaufgaben machen,
blos sind solche Übungsaufgaben auch für mich nicht schlecht.
Trotzdem habe ich keinen Bock daran weiterzuarbeiten, ich habe im moment
zu viele eigene Projekte. -Ich hoffe es läuft, wenn nicht wird vielleicht jemand
den Fehler beim Drucken finden, die Funktion ist aus dem KonsolenFAQ und sollte
eigentlich funktionieren.Max