如何在C编程中再次显示保留的电影院座位

时间:2018-10-22 03:25:16

标签: c

以下是我为电影院的座位预订而编写的代码。问题是当我在预订后再次显示座位时,它没有显示预订的座位。 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");

 }

2 个答案:

答案 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