编程介的小学生 2019-11-10 23:06 采纳率: 0.4%
浏览 89

Mileage Bank 编程计算的实现

Description

Mileage program of ACM (Airline of Charming Merlion) is really nice for the travelers flying frequently. Once you complete a flight with ACM, you can earn ACMPerk miles in your ACM Mileage Bank depended on mileage you actual fly. In addition, you can use the ACMPerk mileage in your Mileage Bank to exchange free flight ticket of ACM in future.

The following table helps you calculate how many ACMPerk miles you can earn when you fly on ACM.

When you fly ACM Class Code You'll earn

First Class F Actual mileage + 100% mileage Bonus

Business Class B Actual mileage + 50% mileage Bonus

Economy Class Y

1-500 miles 500 miles

500+ miles Actual mileage

It's shown that your ACMPerk mileage consists of two parts. One is your actual flight mileage (the minimum ACMPerk mileage for Economy Class for one flight is 500 miles), the other is the mileage bonus (its accuracy is up to 1 mile) when you fly in Business Class and First Class. For example, you can earn 1329 ACMPerk miles, 1994 ACMPerk miles and 2658 ACMPerk miles for Y, B or F class respectively for the fly from Beijing to Tokyo (the actual mileage between Beijing and Tokyo is 1329 miles). When you fly from Shanghai to Wuhan, you can earn ACMPerk 500 miles for economy class and ACMPerk 650 miles for business class (the actual mileage between Shanghai and Wuhan is 433 miles).

Your task is to help ACM build a program for automatic calculation of ACMPerk mileage.
Input

The input file contains several data cases. Each case has many flight records, each per line. The flight record is in the following format:

OriginalCity DistanceCity ActualMiles ClassCode

Each case ends with a line of one zero.

A line of one # presents the end of the input file.
Output

Output the summary of ACMPerk mileages for each test case, one per line.
Sample Input

Beijing Tokyo 1329 F
Shanghai Wuhan 433 Y
0
#
Sample Output

3158

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-29 18:22
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    # read the input file
    input <- readLines()
    
    # initialize variables
    total_miles <- 0
    miles_bonus <- 0
    
    # loop through each case
    for (i in 1:length(input)) {
      # extract the original city, distance city, actual miles, and class code
      original_city <- input[i][1]
      distance_city <- as.integer(input[i][2])
      actual_miles <- as.integer(input[i][3])
      class_code <- input[i][4]
    
      # calculate the miles bonus based on the class code
      if (class_code == "F") {
        miles_bonus <- miles_bonus + 100 * actual_miles
      } else if (class_code == "B") {
        miles_bonus <- miles_bonus + 50 * actual_miles
      }
      
      # add the actual miles to the total miles
      total_miles <- total_miles + actual_miles
      
      # check if we have reached the end of the input file
      if (input[i] == "#") break
    }
    
    # output the total miles and miles bonus
    cat(paste(total_miles, " ", miles_bonus))
    

    这段代码使用了 R 语言编写。首先读取输入文件中的数据,并初始化变量 total_milesmiles_bonus。然后遍历每个案例,从每行中提取原始城市、距离城市、实际里程和航班类型。根据航班类型计算里程奖励(如果为F,则奖励100%,否则奖励50%),并将实际里程累加到总里程上。当到达输入文件末尾时停止循环。最后输出总里程和里程奖励。

    评论

报告相同问题?