zweidimensionales Array
-
Einen schönen guten Tag. Ich hab ein richtig großes Problem, was ich innerhalb von 3 Tagen lösen muss. Ich schreib hier einfach mal die Aufgabenstellung, die uns der Lehrer gegeben hat:
Erstellen Sie ein Programm zur Darstellung der belegten Sitzplätze im Kabarett (10 Reihen mit je 20 Sitzplätzen).
Folgende Forderungen sind zu erfüllen:
- am Anfang sind alle Plätze als FREI anzuzeigen;
- das Programm soll „menügesteuert“ arbeiten (Menüpunkte : Anzeige / Buchung / Ende);
- bei der Buchung ist die gewünschte Reihe, die Anzahl der zu belegenden Plätze und der 1. zu reservierende Platz abzufragen ;
- Plätze dürfen nicht doppelt belegt werden;
- es dürfen nur existierende Plätze belegt werden;
- die Anzahl der belegten Plätze ist anzuzeigen;
- Bei nicht zusammenhängenden Plätze Abfrage ob Neueingabe.Die Ausgabe soll dann in einem 20 x 10 Matrix stattfinden. Da wo die Sterne sind, sind Sitzplätze belegt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 - - - - - - - - - - - - - - - - - - - -
2 - - - - - - * * * * * - - - - - - - - -
3 - - - - - - - - - - - - - - - - - - - -
4 - - - - - - - - - - - - - - - - - - - -
5 - - - - - - - - - - - - - - - - - - - -
6 - - - - - - - - - - - - - - - - - - - -
7 - - - - - - - - - - - - - - - - - - - -
8 - - - - - - - - - - - - - - - - - - - -
9 - - - - - - - - - - - - - - - - - - - -
10 - - - - - - - - - - - - - - - - - - - -Wäre super, wenn ihr mir dabei helfen könntet oder mir nen paar Tips geben könntet, wie ich da am Besten ran gehe.
Echt vielen Dank!
Grüße die kleine
-
@databurn: Wie würdest den du an die Sache ran gehen?
-
Eigentlich hast du dir die Rangehensweise schon selbst mit deiner Überschrift beantwortet. Die nötige kreativität zur Datenverarbeitung hast du dann bestimmt auch.
-
Also ich hab da schon mal nen Grundgerüst für die Anzeige der Plätze. Nach jeder weiteren Eingabe eines Platzes, wird dieser auch mit einer 1 markiert. Nur leider soll die Eingabe ja so stattfinden, dass man den Anfangsplatz angibt und die Anzahl der Plätze. Wenn Also Anfagsplatz Reihe 1 Platz 2 ist, und der Wunsch nach 3 Plätzen besteht, dann Muss Platz 1-3 reserviert werden. Nur leider weis ich nicht wie ich das realisieren soll

Hier mal der Code bis jetzt:
void main()
{
int i,j, a, b;
int array[20][10];
char weiter = 'j';for(i=0;i<=20;i++)
{
for(j=0;j<=10;j++)
{
array[i][j] = 0;
}
}while (weiter == 'j')
{
cout << "Reihe: ";
cin >> a;
cout << "Platz: ";
cin >> b;
array[a-1][b-1] = 1;
for(i=0;i<=20;i++)
{
cout << "\n";
for(j=0;j<=10;j++)
{
cout << array[i][j];}
}
cout << "\n\\nNaechste Eingabe(j/n)?: ";
cin >> weiter;
}}
-
Hi,
1.) Bitte Code-Tags benutzen, sonst liest sich das richtig schwierig:
void main() { int i,j, a, b; int array[20][10]; char weiter = 'j'; for (i=0;i<=20;i++) { for (j=0;j<=10;j++) { array[i][j] = 0; } } while (weiter == 'j') { cout << "Reihe: "; cin >> a; cout << "Platz: "; cin >> b; array[a-1][b-1] = 1; for (i=0;i<=20;i++) { cout << "\n"; for (j=0;j<=10;j++) { cout << array[i][j]; } } cout << "\n\\nNaechste Eingabe(j/n)?: "; cin >> weiter; } }2.) Der Ansatz mit dem mehrdimensionalem Array ist doch gut.
Bei der Platzreservierung verstehe ich nicht ganz dein Problem.
Speichere die gebuchten Plätze doch einfach in deine Arrays mit ein und überprüfe bei jeder neuen Abfrage, ob die gewünschten Plätze schon belegt sind
Grüße, NewProggie
-
Vielen dank für die schnelle Antwort

Momentan ist der Ablauf ja so, dass nach jeder weiteren Eingabe der reservierte Platz mit angezeigt wird. Die Eingabe soll aber laut Aufgabe so sein, dass ich die Anzahl der Plätze mit eingebe und somit dann die nachbarplätze in der gleichen Reihe mit reserviert werden. Da weis ich nicht genau, wie ich es mache. Irgendwie mit einer For Schleife noch, aber wie?
Vielen Dank!
Grüße
-
//Variable für abfrage bool frei=true; //Abfrageschleife for(int i=startplatz-1;i<(startplatz+platzzahl)-1;++i) { //Abfrage für jeden einzellnen Platz ob noch frei if(array[i][reihe]==1) { //wenn belegt frei=false, Schleife sofort verlassen frei=false; break; } }; if(frei==true) //ist true dann eintragen else //ist false dann Meldung das einer der Plätze schon vergeben istSo würde ich es lösen.
Ich würde dir übrigends mal das lesen eines tutorials empfehlen.
-
int array[20][10]; for (i=0; i<=20; i++) for (j=0; j<=10; j++) // in den Schleifen dann Zugriff auf array[i][j] // usw. usf.Sowas führt unweigerlich zu Fehlern.
von 0 bis 20 sind es 21 Elemente, und nicht so wie deklariert 20.
Besser wäre vermutlich so etwas in der Art:for (i=0; i<20; i++)Hier würde i den Wert von 0 bis 19 annehmen, was bei einem foo[20] passen würde. Die meisten Programmiersprachen fangen bei 0 zum Zählen an.
-
Vielen Dank nochmals für eure Hilfe. Das Programm ist soweit fertig programmiert - nach vielen vielen Programmierstunden
.Ohne eure Hilfe hätte es noch viel viel länger gedauert!
Grüße Databurn