Hi leute,
und zwar hab ich folgendes Problem. Wir haben in der Schule nen Code bekommen den wir zur Übung fertigstellen durften. Nun war der Lehrer ne lange Zeit krank und die Aufgabe ist in Vergessenheit geraten. Jetzt hatte ich mir vor paar tagen vorgenommen diese Aufgabe zur Übung zu lösen. Leider hab ich es nach langem herumprobieren nicht auf die Reihe bekommen und wäre jetzt um jede Hilfe dankbar, denn nun will ich unbedingt die Lösung haben. Theoretisch könnte ich es auf eine andere Weise irgendwie funktionsfähig machen, würde aber gerne wissen wie eine Lösung mit dem vorgegebenen Code realisierbar ist.
Bei dem Programm handelt es sich um eine Parkhaussimulation, bei dem ich mit der noch fehlenden Funktion "schaltePfeile" nicht zurecht komme.
Die Pfeile sollen so geschaltet werden, dass ein Kraffahrzeug zu dem von der Einfahrt her entferntesten freien Parkplatz geleitet wird.
//-------Park Haus Leitsystem --ok-------------------------------------------
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
//Prototypen
void zeichneParkhaus(void);
int suchefreieEtage(void);
int suchefreienParkplatz(int);
void einausfahrt(bool);
void schaltePfeile(int, int);
// Globale Datendefinition
bool ab_parkhaus[3][10]
= {{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0}};
bool bfrei;
int ietage, iparkplatz;
bool bpfeillinks0, bpfeilgeradeaus0, bpfeilrechts0;
bool bpfeillinks1, bpfeilgeradeaus1, bpfeilrechts1;
bool bpfeillinks2, bpfeilgeradeaus2, bpfeilrechts2;
//Hauptprogramm
int main(int argc, char* argv[])
{
do
{
bfrei= (suchefreieEtage()+1);
if (bfrei)
{
ietage=suchefreieEtage();
iparkplatz=suchefreienParkplatz(ietage);
schaltePfeile(ietage, iparkplatz);
zeichneParkhaus();
einausfahrt(1);
clrscr();
}
else
{
cout << "Parkhaus gesperrt!!!"<<endl;
einausfahrt(0);
}
}
while(1);
return 0;
}
//---------------------------------------------------------------------------
// Funktionsdefinitionen
void zeichneParkhaus(void)
{
cout << "-----------------------------------------"<<endl;
for (int i=2; i>=0; i--)
{
// Ausgabe linke Etage
for (int j=0; j <=4 ;j++)
{
if(ab_parkhaus[i][j]==1)
{
cout << " 1 ";
}
else
{
cout << " 0 ";
}
}
//Ausgabe Pfeile
switch (i)
{
case 0:
if (bpfeillinks0==1){ cout << "<--";} else { cout << " ";}
if (bpfeilgeradeaus0==1){ cout << " ^ ";} else { cout << " ";}
if (bpfeilrechts0==1){ cout << "-->";} else { cout << " ";}
break;
case 1:
if (bpfeillinks1==1){ cout << "<--";} else { cout << " ";}
if (bpfeilgeradeaus1==1){ cout << " ^ ";} else { cout << " ";}
if (bpfeilrechts1==1){ cout << "-->";} else { cout << " ";}
break;
case 2:
if (bpfeillinks2==1){ cout << "<--";} else { cout << " ";}
if (bpfeilgeradeaus2==1){ cout << " ^ ";} else { cout << " ";}
if (bpfeilrechts2==1){ cout << "-->";} else { cout << " ";}
break;
}
// Ausgabe rechte Etage0
for (int j=5; j <=9 ;j++)
{
if(ab_parkhaus[i][j]==1)
{
cout << " 1 ";
}
else
{
cout << " 0 ";
}
}
cout << endl;
}
cout << "-----------------------------------------" <<endl;;
}
int suchefreieEtage(void)
{
for(int i=2;i>=0;i--)
{
for(int j=0;j<=9;j++)
{
if(ab_parkhaus[i][j]==0)
{
ietage = i;
return ietage;
}
}
}
return(-1);
}
int suchefreienParkplatz(int iEtagenNr)
{
for(int j=0;0<=4;j++)
{
if(ab_parkhaus[iEtagenNr][j]==0)
{
return j;
}
else if(ab_parkhaus[iEtagenNr][9-j]==0)
{
return 9-j;
}
}
return(-1);
}
void einausfahrt(bool bfrei)
{
char ceingabe;
int i, j;
if (bfrei)
{
cout << "Einfahrt oder Ausfahrt (e/a)?" ;
cin >> ceingabe;
cout << endl;
switch (ceingabe)
{
case 'e':
cout<< "In welche Etage fahren Sie (0-2)?";
cin >> i; cout << endl;
cout<< "In welche Box fahren Sie (0-9)?";
cin >> j; cout << endl;
if ((i>=0)&&(i<=2)&&(j>=0)&&(j<=9))
{
if (ab_parkhaus[i][j]==0)
{
ab_parkhaus[i][j]=1;
}
else
{
cout << "Parkplatz schon belegt";
getchar();
}
}
else
{
cout<< "Fehlerhafte Eingabe";
}
break;
case 'a':
cout<< "Welchen Parkplatz möchten Sie verlassen?" << endl;
cout<< "Etage (0-2)?";
cin >> i; cout << endl;
cout<< "Box (0-9)?";
cin >> j; cout << endl;
if ((i>=0)&&(i<=2)&&(j>=0)&&(j<=9))
{
if (ab_parkhaus[i][j]==1)
{
ab_parkhaus[i][j]=0;
}
else
{
cout << "Parkplatz ist ncoh frei";
}
}
else
{
cout<< "Fehlerhafte Eingabe";
}
};
}
else
{
cout<< "Welchen Parkplatz möchten Sie verlassen?" << endl;
cout<< "Etage (0-2)?";
cin >> i; cout << endl;
cout<< "Box (0-9)?";
cin >> j; cout << endl;
if ((i>=0)&&(i<=2)&&(j>=0)&&(j<=9))
{
if (ab_parkhaus[i][j]==1)
{
ab_parkhaus[i][j]=0;
}
else
{
cout << "Parkplatz ist noch frei";
}
}
else
{
cout<< "Fehlerhafte Eingabe";
}
}
}
void schaltePfeile(int iEtagennr, int iParkplatznr)
{
if (iParkplatznr <5)
{
if(iEtagennr == 2)
{
bool bpfeillinks2 = 1;
}
else if(iEtagennr == 1)
{
bool bpfeillinks1 = 1;
}
else if(iEtagennr == 0)
{
bool bpfeillinks0 = 1;
}
}
else
{
if(iEtagennr == 2)
{
bool bpfeilrechts2 = 1;
}
else if(iEtagennr == 1)
{
bool bpfeilrechts1 = 1;
}
else if(iEtagennr == 0)
{
bool bpfeilrechts0 = 1;
}
}
// Rücksetzen der Pfeile
//Schalten der Pfeile
}
Ich hoffe das alles einigermaßen verständlich war und bedanke mich schon einmal für eure Mühe.
MFG
Invisi09