1>D:\計算機軟體基礎實驗\實驗二:堆疊和佇列\停車場管理模擬\停車場管理模擬.cpp(182,79): error C3688: 文本后綴“,c1”無效;未找到文文本運算子或文本運算子模板“operator """",c1” // 停車場管理模擬.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始并結束。 #define N 4//定義車庫的最大容量
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
#include <string.h>
#include <math.h>
typedef struct {//定義停車場登記的結構體
time_t arrtime;
time_t leatime;
int ID;
}Car;
typedef struct {//定義車庫堆疊
Car stack[N];
int top;
}seqparklist;
typedef struct LoadNode {//定義在排隊中的佇列
Car loadnode;
LoadNode* next;
}LoadNode, * LoadList; seqparklist Park, Park2;//Park為停車場,Park2為中轉站
LoadList Load;//便道 //初始化
//初始化便道
void InitQueue(LoadList* Q) {
Q = (LoadList*)malloc(sizeof(LoadNode));
(*Q)->next = NULL;
}
//初始化停車場
void InitSeqStack(seqparklist* top)
{
top->top = -1;
}
//車進入便道
int EnterQueue(Car* car) {
int order = 0;
LoadNode* p1, * p2;
p1 = p2 = Load;
LoadNode* newCar = (LoadNode*)malloc(sizeof(LoadNode)); //找到隊尾,回傳位置
while (p1 != NULL) { order++; p2 = p1; p1 = p1->next;
}
newCar->loadnode = *car;
p2->next = newCar;
newCar->next = NULL;
return order;
}
//判斷停車場是否已滿
bool isFull() {
if (Park.top == N - 1)return true;
return false;
}
//判斷停車場是否為空
bool isParkEmpty(seqparklist* park) {
if (park->top == -1)return true;
return false;
} //車出便道
int DeleteQueue(Car* car) {
LoadNode* ycar;
ycar = Load->next;
if (ycar == NULL)return 0;
*car = ycar->loadnode;
Load->next = ycar->next;
free(ycar);
return 1;
} //車進停車場
int Push(seqparklist* S, Car* car) {
if (S->top == N - 1)return -1;
S->top++;
time(&car->arrtime);
S->stack[S->top] = *car;
return S->top;
} //停車庫最外面的車
int GetTop(seqparklist* S, Car* car) {
if (S->top == -1)return S->top;
*car = S->stack[S->top];
return S->top;
} //比較兩個車
bool ComCar(Car c1, Car c2) {
if (c1.ID == c2.ID)return true;
return false;
} //進停車場,為要出庫的車提供地方
int MoveIn(seqparklist* S, Car* car) {
if (S->top == N - 1)return -1;
S->top++;
S->stack[S->top]=*car;
return S->top;
}
int MoveOut(seqparklist* S, Car* car) {
if (S->top == -1)return S->top;
*car = S->stack[S->top];
S->top--;
return S->top + 1;
}
//車出停車場
int Pop(seqparklist* S, Car* car) {
if (S->top == -1)return S->top;
*car = S->stack[S->top];
time(&car->leatime);
S->top--;
return S->top + 1;
} //有車進入
void Carin(Car* car) {
int order;
order = EnterQueue(car);
if (isFull())//判斷停車場是否已滿
{ printf("車已進入便道位置%d等待!\n", order);
}
else {
Car xcar;
DeleteQueue(&xcar);//出便道
order = Push(&Park, &xcar);//進入停車場
printf("車已進入停車場位置%d\n", order + 1);
}
}
//有車離開
void Carout(Car* car) {
if (isParkEmpty(&Park)) { printf("停車場已空!");
}
else { Car c1; GetTop(&Park, &c1); //如果停車場最外面不是將要離去的車,便從堆疊中挪出,存入另一個堆疊,直到車庫最外面為要出庫的車 while (!ComCar(c1, *car)) { MoveOut(&Park, &c1); MoveIn(&Park2, &c1); GetTop(&Park, &c1); } int order = Pop(&Park, &c1); printf("此車在停車場停留%lds,并且花費%d元(60s/2元)\n",(c1.leatime - c1.arrtime), (c1.leatime - c1.arrtime + 9) / 60 * 2); while (!isParkEmpty(&Park2)) { MoveOut(&Park2, &c1); MoveIn(&Park, &c1); }
}
Car c1;
if (DeleteQueue(&c1)) { Push(&Park, &c1);
}
} int main()
{
InitQueue(&Load);
InitSeqStack(&Park);
InitSeqStack(&Park2);
seqparklist park, park2;
LoadList Load;
Car car1;
printf("/n-------------------歡迎使用停車場管理系統--------------------/n");
printf("請輸入車牌號,進入Aor離開Dor退出程式E:\n");
char action;
scanf_s("%d %c", &car1.ID, &action,sizeof(action));
switch (action)
{
case'a':
case'A': Carin(&car1); break;
case'd':
case'D': Carout(&car1); break;
case'e':
case'E': printf("\n程式正常結束\n"); break;
default: break;
} printf("請輸入車牌號,進入Aor離開Dor退出程式E:\n"); scanf_s("%d %c", &car1.ID, &action,sizeof(action)); }
uj5u.com熱心網友回復:
應該是因為輸入了中文的逗號所以導致出錯轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71303.html
標籤:新手樂園
上一篇:想請教一下關于C語言檔案資料讀入的問題,不知道為什么輸出了奇怪的東西
下一篇:c++新手求助
