首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Javascript将乘客分配到航班上

如何使用Javascript将乘客分配到航班上
EN

Stack Overflow用户
提问于 2022-06-29 09:22:28
回答 1查看 86关注 0票数 1

我有一个项目,负责管理航班和乘客号码。我现在正忙于实现下面的函数,任何关于我如何去做的建议都是很棒的,我现在所拥有的是我认为不正确的,再次感谢。

问题:

在旅客()函数中,编写一个distributeAllSeatsToAllPassengers()函数,作为参数接收贵宾人数、常规乘客人数、航班数目、每次航班商务座位数和每次航班经济舱座位数。返回包含以下字段的对象:带商务座位的VIP乘客;带经济座位的VIP乘客;带商务座位的普通乘客;带经济座位的普通乘客。

必须按照以下顺序遵守分配规则:

首先,将贵宾乘客分配到商务座位上,直到VIP乘客或商务座位被消费为止。

然后,如果仍然有贵宾乘客,将他们分配到经济座位,直到贵宾乘客或经济座位被消费。

然后,如果仍然有商务座位,则将普通乘客分配到商务座位上,直到正式乘客或商务座位被消费为止。

然后,如果仍然有经济座位,就把普通乘客分配到经济座位上,直到普通乘客或经济座位被消费为止。你必须指派尽可能多的乘客。可能有乘客,也可能还有剩下的座位。

定义distributeAllSeatsToAllPassengers()函数后,一行代码将从模块导出函数:返回{distributeAllSeatsToAllPassengers};

当前解决方案:

代码语言:javascript
复制
import { supportsEsModules } from "mocha/lib/utils";

function Passengers() {

    function distributeAllSeatsToAllPassengers(vipPassengers, 
        regularPassengers, nrOfFlights, businessSeatsPerFlight, economySeatsPerFlight)
    { 
        let vipPassengersAssignedToBusinessSeats = 0;
        let vipPassengersAssignedToEconomySeats = 0;
        let regularPassengersAssignedToBusinessSeats = 0;

        vipPassengersAssignedToBusinessSeats = vipPassengers / businessSeatsPerFlight;
        vipPassengersNotSeated = vipPassengers % businessSeatsPerFlight;
        
        
        if (vipPassengersNotSeated !== 0)
        {
            vipPassengersAssignedToEconomySeats = vipPassengersNotSeated / economySeatsPerFlight;
            vipPassengersStillNotSeated = vipPassengersNotSeated % economySeatsPerFlight;
        }

        if (businessSeatsPerFlight !== 0)
        {
            regularPassengersAssignedToBusinessSeats = regularPassengers / businessSeatsPerFlight;
            regularPassengersNotSeated = regularPassengers % businessSeatsPerFlight;
        }

        if (economySeatsPerFlight !== 0)
        {
            regualarPassengersAssignedToEconomySeats = regularPassengersNotSeated / economySeatsPerFlight;
            regularPassengersStillNotSeated = regularPassengersNotSeated % economySeatsPerFlight;
        }

        var distributedPassengers = {
            vipPassengersWithBusinessSeats: vipPassengersAssignedToBusinessSeats,
            vipPassengersWithEconomySeats: vipPassengersAssignedToEconomySeats,
            regularPassengersWithBusinessSeats: regularPassengersAssignedToBusinessSeats,
            regularPassengersWithEconomySeats: regularPassengersAssignedToEconomySeats
        };
        return { distributedPassengers };

    }
    return { distributeAllSeatsToAllPassengers };
}

module.exports = Passengers();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-29 11:12:38

这就是我想出来的,我不知道这是否符合你们老师的指导原则,但应该有效。也许可以作为一个起点。我补充了解释。

vipPassengersAssignedToBusinessSeats = vipPassengers / businessSeatsPerFlight;的问题是,您可能会得到一个浮点数。图片有3个贵宾乘客和2个商务座位- 3/2返回一个花车。我会用循环来解决这个问题。

免责声明:没有测试,我以前也没有使用过%操作符,但我相信你可以适应。

代码语言:javascript
复制
function Passengers() {

function distributeAllSeatsToAllPassengers(num_flights, economy_seats, business_seats, passengers_vip, passengers_regular) {

    // number of flights is completely redundant in this example
    
    let passengers_vip_seated_business = 0,
        passengers_vip_seated_economy = 0,
        passengers_regular_seated_business = 0,
        passengers_regular_seated_economy = 0,
        passengers_vip_unseated = 0, // not necessary but nice to have
        passengers_economy_unseated = 0; // see above

    // use a for..of loop, assuming passengers_vip is an array
    for (let passenger of passengers_vip) {
        if (business_seats > 0) {
            business_seats--; // reduce number of available business seats
            passengers_vip_seated_business++; // increase number of seated passengers
        } else if (economy_seats > 0) {
            // if there are no business seats available, assign to economy_seats
            economy_seats--;
            passengers_vip_seated_economy++;
        } else {
            // no more seats, bummer!
            passengers_vip_unseated++;
        }
    }
    // do the same for regular passengers
    for (let passenger of passengers_regular) {
        if (business_seats > 0) {
            business_seats--; // reduce number of available business seats
            passengers_regular_seated_business++; // increase number of seated passengers
        } else if (economy_seats > 0) {
            // if there are no business seats available, assign to economy_seats
            economy_seats--;
            passengers_regular_seated_economy++;
        } else {
            // no more seats, bummer!
            passengers_economy_unseated++;
        }
    }
    
    return {
        passengers_vip_seated_business: passengers_vip_seated_business,
        passengers_vip_seated_economy: passengers_vip_seated_economy,
        passengers_regular_seated_business: passengers_regular_seated_business,
        passengers_regular_seated_economy: passengers_regular_seated_economy
    }
}

// returns the function, idk why but okay, maybe for functional programming
return {distributeAllSeatsToAllPassengers}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72798935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档