Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 结构和字符串_C_String_Character_Structure - Fatal编程技术网

C 结构和字符串

C 结构和字符串,c,string,character,structure,C,String,Character,Structure,基本上,我在理解这个问题时遇到了一个问题 所以我试着刺激一些电梯 最初,所有电梯都在一楼,里面有0名乘客 和0使用率,即,尚未有人完成使用 给定一系列楼层编号,电梯将到达 一一对应楼层 如果电梯从一个较低的楼层到一个较高的楼层m,m 乘客将试图进入电梯。然而,一旦 电梯中的乘客人数达到15人,这是 电梯的容量,没有额外的乘客将能够 进入电梯 如果有p位乘客的电梯从一个较高的楼层到一个较低的楼层 n层、n层或p层,以较小者为准,乘客将离开 电梯离开电梯的实际乘客人数 应计入已完成的乘客人数 使用电

基本上,我在理解这个问题时遇到了一个问题

所以我试着刺激一些电梯

最初,所有电梯都在一楼,里面有0名乘客 和0使用率,即,尚未有人完成使用

给定一系列楼层编号,电梯将到达 一一对应楼层

如果电梯从一个较低的楼层到一个较高的楼层m,m 乘客将试图进入电梯。然而,一旦 电梯中的乘客人数达到15人,这是 电梯的容量,没有额外的乘客将能够 进入电梯

如果有p位乘客的电梯从一个较高的楼层到一个较低的楼层 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
我需要帮助我的功能运行电梯和goToFloor,因为我不确定它们需要什么。我想我在电梯里做错了什么,但我不确定到底是什么

我知道字符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;
}

请具体解释你的问题,我不明白发生了什么事。解释你的期望和实际发生的事情。同样,forc=0;cvoid runElevators(elevator_t elevators[], char sequences[][MAX_LEN], int size) { int i, c; int prevFloor, currFloor; for(i = 0; i < size; i++) { for(c = 0; c < strlen(sequences[i]); c++) { prevFloor = elevators[i].floor; currFloor = sequences[i][c] - '0'; if (currFloor > prevFloor) { // Elevator going UP, passengers will enter the elevator int numPassengerToEnter; // Max capacity of elevator is CAPACITY (=15) numPassengerToEnter = CAPACITY - elevators[i].passenger; // At floor m, only m passengers (= currFloor) are available (to enter elevator) if (numPassengerToEnter < currFloor) { elevators[i].passenger += numPassengerToEnter; } else { elevators[i].passenger += currFloor; } } else if (currFloor < prevFloor) { // Elevator going DOWN, passengers will exit the elevator int numPassengerToExit; // Smaller of (Current floor number n) and (current number of passenger in elevator) will exit the elevator if (elevators[i].passenger < currFloor) { numPassengerToExit = elevators[i].passenger; } else { numPassengerToExit = currFloor; } elevators[i].passenger -= numPassengerToExit; } // Update current floor of elevator elevator[i].floor = currFloor; } }