以下是我为电影院的座位预订而编写的代码。问题是当我在预订后再次显示座位时,它没有显示预订的座位。 p.s:我可以看到“座位已被预订,但它没有显示在屏幕上的消息。
0 =空座位。
1 =保留席位。
正在编码:
#include <stdio.h>
void DisplaySeats(void);
void ReserveSeats(void);
void ChooseSeat(void);
int Seats[4][10];
int main()
{
printf("Welcome to our small Cinema!!!\n");
printf("\n");
DisplaySeats();
ReserveSeats();
printf("Thankyou for Choosing our small Cinema !! \n");
getch();
}
void ChooseSeat(void)
{
int row, col,k;
printf("Which row do you want to choose? : ");
scanf_s("%d", &row);
printf("Which seat do you want to select? : ");
scanf_s("%d", &col);
if (row > 4 || col > 10)
{
printf("Wrong Entry !! Try again\n");
ChooseSeat();
}
else if (Seats[row - 1][col - 1] != 0)
{
printf("Seat is already reserved try again !!\n");
ChooseSeat();
}
else
{
Seats[row - 1][col - 1] = 1;
printf("Congratulations!! Reservation Completed!!!\n");
DisplaySeats();
}
}
void ReserveSeats(void)
{
int NoOfSeats,i;
printf("How many seats do you want to reserve?\n");
scanf_s("%d", &NoOfSeats);
for (i = 1; i <= NoOfSeats; i++)
{
ChooseSeat();
}
}
void DisplaySeats(void)
{
int i, j;
int Seats[4][10] = { 0 };
printf("\t \t Seats\n");
printf("\t1 2 3 4 5 6 7 8 9 10\n");
for (i = 0; i < 4; i++)
{
printf("Rows %d: ", i + 1);
for (j = 0; j < 10; j++)
printf("%d ", Seats[i][j]);
printf("\n");
}
printf("\n");
}
答案 0 :(得分:0)
问题出在您的DisplaySeats
函数中。显示函数中有一个本地Seats[4][10]
,这意味着全局变量Seats[4][10]
将隐藏在DisplaySeats
内部。
每次调用DisplaySeats
时,您只会显示一个全新的Seats
,不是在ChooseSeat
函数中修改过的那个。因此,只需在您的int Seats[4][10] = { 0 };
函数中摆脱DisplaySeats
,您就可以了。
答案 1 :(得分:0)
几年前,我用以下想法解决了相同的问题: 电影院的每一行都是一个链接列表,并且列表的每个元素包含每一列的新链接列表的地址。
为持久起见,请使用file.txt
您可以在我在github上的存储库中看到它:
https://github.com/LombardoAndrea195/Sistemi_Operativi_Project/tree/master/Sistemi_Operativi_Lombardo