?
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