-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStage 3. Tickets.
62 lines (51 loc) · 1.87 KB
/
Stage 3. Tickets.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
The project is made by Artem Riabchikov, OpenAI based on hyperskill.org project "Cinema Room Manager" using Kotlin.
To make this project, I used open github project of github user marckoch.
*/
package stage3 // third stage of the project, Tickets.
fun main() {
var bookedSeats = emptyArray<Pair<Int, Int>>()
val rows = printInfoAndGetInt("Enter the number of rows:")
val seatsPerRow = printInfoAndGetInt("Enter the number of seats in each row:")
printSeating(rows, seatsPerRow)
val selectedRow = printInfoAndGetInt("Enter a row number:")
val selectedSeat = printInfoAndGetInt("Enter a seat number in that row:")
val ticketPrice = determineTicketPrice(rows, seatsPerRow, selectedRow)
println("Ticket price: $$ticketPrice")
bookedSeats += Pair(selectedRow, selectedSeat)
printSeating(rows, seatsPerRow)
}
fun printInfoAndGetInt(info: String): Int {
println(info)
return readLine()!!.toInt()
}
fun printSeating(rows: Int, seatsPerRow: Int) {
println("Cinema:")
for (rowNumber in 0..rows) {
for (seatNumber in 0..seatsPerRow) {
if (rowNumber == 0 && seatNumber == 0) {
print(" ")
} else if (rowNumber == 0) {
print(" $seatNumber")
} else if (seatNumber == 0) {
print("$rowNumber")
} else {
print(" ")
print(getSeatMarker(rowNumber, seatNumber))
}
}
println()
}
}
fun getSeatMarker(rowNumber: Int, seatNumber: Int): String {
return if (bookedSeats.contains(Pair(rowNumber, seatNumber))) "B" else "S"
}
fun determineTicketPrice(rows: Int, seatsPerRow: Int, selectedRow: Int): Int {
val totalSeats = rows * seatsPerRow
return if (totalSeats <= 60) {
10
} else {
val rowsInFront = rows / 2
if (selectedRow <= rowsInFront) 10 else 8
}
}