0
基本上,我有一個理解問題的問題。字符的結構和字符串
所以我試圖刺激一些電梯。
最初,所有電梯是在一樓用0乘客內部 和0的使用(即,沒有人用它們尚未完成)。
給定一系列的樓層號碼,電梯一個接一個地去到
對應的樓層。如果電梯從較低樓層到較高樓層m,乘客將嘗試進入電梯。但是,一旦電梯中的乘客人數達到15人,這就是電梯的容量,沒有額外的乘客就能夠進入電梯。
如果與對乘客的電梯從較高的樓層進入較低 地板N,N(或P中較小的一個)的乘客將退出
電梯。應使用電梯計算出離開電梯
的實際乘客數量,該乘客數量已完成 。
然後,我試圖打印出相應的樓層,乘客人數和使用情況。
Enter number of elevators: 1
Enter sequence for elevator 1: 24653
Elevator 1:
Floor: 3
Number of passengers: 4
Usage: 8
Most used elevator: 1
Enter number of elevators: 2
Enter sequence for elevator 1: 24653
Enter sequence for elevator 2: 798635
Elevator 1:
Floor: 3
Number of passengers: 4
Usage: 8
Elevator 2:
Floor: 5
Number of passengers: 5
Usage: 15
Most used elevator: 2
我需要我的功能「runElevators」和「goToFloor」因爲我不知道什麼是他們需要幫助。我認爲我在「runElevators」中做了一些錯誤,但我不確定究竟是什麼。
我明白,字符「2」並不意味着整數「2」,但我似乎無法解決它。
任何幫助將不勝感激。謝謝!
#include <stdio.h>
#include <string.h>
#define CAPACITY 15
#define MAX_LEN 21
#define MAX_ELEVATORS 5
typedef struct {
int floor, passenger, usage;
} elevator_t;
void setupElevators(elevator_t [], int);
void readSequences(char [][MAX_LEN], int);
void runElevators(elevator_t [], char [][MAX_LEN], int);
void goToFloor(elevator_t *, int);
void printElevators(elevator_t [], int size);
int mostUsedElevator(elevator_t [], int);
// This function is given. You are NOT to modify it.
int main(void){
int size;
elevator_t elevators[MAX_ELEVATORS];
char sequences[MAX_ELEVATORS][MAX_LEN];
printf("Enter number of elevators: ");
scanf("%d", &size);
setupElevators(elevators, size);
readSequences(sequences, size);
runElevators(elevators, sequences, size);
printElevators(elevators, size);
printf("Most used elevator: %d\n", mostUsedElevator(elevators, size));
return 0;
}
void setupElevators(elevator_t elevators[], int size){
int i;
for(i = 0; i < size; i++)
{
elevators[i].floor = 1;
elevators[i].passenger = 0;
elevators[i].usage = 0;
}
}
// Read in the sequences of floors the elevators go to.
// This function is given. You are NOT to modify it.
void readSequences(char sequences[][MAX_LEN], int size){
int i;
for (i = 0; i<size; i++){
printf("Enter sequence for elevator %d: ", i+1);
scanf("%s", sequences[i]);
}
}
void runElevators(elevator_t elevators[], char sequences[][MAX_LEN], int size){
int i, c;
for(i = 0; i < size; i++)
for(c = 0; c < strlen(sequences[i]); c++)
{
elevators[i].floor = sequences[i][strlen(sequences[i]) - 1];
if((elevators[i].passenger < 15) && (sequences[i][c+1] > sequences[i][c]))
elevators[i].passenger += sequences[i][c];
if(elevators[i].passenger > 15)
elevators[i].passenger = 15;
if((elevators[i].passenger > 0) && (sequences[i][c] > sequences[i][c+1]))
elevators[i].passenger -= sequences[i][c+1];
if(sequences[i][c] > sequences[i][c+1])
elevators[i].usage += sequences[i][c+1];
}
}
void goToFloor(elevator_t *elevator, int floor){
}
void printElevators(elevator_t elevators[], int size){
int i;
for(i = 0; i < size; i++)
{
printf("Elevator : %d\n", i+1);
printf("Floor: %d\n", elevators[i].floor);
printf("Number of passengers: %d\n", elevators[i].passenger) ;
printf("Usage: %d\n", elevators[i].usage);
}
}
int mostUsedElevator(elevator_t elevators[], int size){
// Incomplete
return 1;
}
請說明您的問題具體地講,我不明白是怎麼回事。解釋你的期望和實際發生的情況。另外,'for(c = 0; c
「我認爲我做錯了什麼」。你能詳細說明一下嗎?描述輸入,預期行爲和實際行爲。 – kaylum