嗨,我即将完成课堂项目。我需要根据几个因素对航空公司人员的优先级进行排序。这是我的项目描述:
“一家航空公司使用下面所示的公式来确定乘客的优先顺序
超额预订航班的等候名单。
优先级数 = (A / 1000) + B - C
在哪里
A为客户过去一年的总里程
B 是其常旅客计划的年数
C是代表客户预订时到达位置的序列号
航班。
给定一个超额预订客户的文件,如下表所示,编写一个程序来读取
归档并确定每个客户的优先级编号。然后程序建立一个优先级队列
使用优先编号并按优先顺序打印等待客户的列表。”
我觉得我的代码包含了主要思想,但我在 getline 方面遇到了问题。当我编译代码(如下所示)时,它给了我一个错误:
“|24|警告:函数‘getline’的隐式声明 [-Wimplicit-function-declaration]|”
请帮我解决这个问题,以便它可以编译。我已经尝试了很多东西,但没有任何效果。
这是代码:
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE * fp; //create file pointer to be read later
char * line = NULL;
int temp,count=0,len=0,mileage[100],read,years[100],sequence[100],priority[100];
char name[100][100],tempst[100];
fp = fopen("customers.txt", "r"); //opening the file
if (fp == NULL)
exit(EXIT_FAILURE);
int i;
while ((read = getline(&line, &len, fp)) != -1) { //start reading file and recording data
i=0;
while(line[i]!=' ' || (line[i+1]>='A' && line[i+1]<='z'))
{
name[count][i]=line[i];
i++;
}
name[count][i++]='\0';
mileage[count]=0;
while(line[i]!=' ')
{
mileage[count]=mileage[count]*10+(line[i]-'0');
i++;
}
i++;
years[count]=0;
while(line[i]!=' ')
{
years[count]=years[count]*10+(line[i]-'0');
i++;
}
i++;
sequence[count]=0;
while(line[i]!='\0')
{
sequence[count]=sequence[count]*10+(line[i]-'0');
i++;
}
priority[count]=(mileage[count]/1000)+years[count]-sequence[count];
count++;
}
for( i=0;i<count-1;i++) // calculate priority
{
for(int j=i+1;j<count;j++)
{
if(priority[i]<priority[j])
{
temp=priority[i];
priority[i]=priority[j];
priority[j]=temp;
strcpy(tempst,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],tempst);
}
}
}
for( i=0;i<count;i++) //print priority
{
printf("%s %d\n",name[i],priority[i]);
}
return 0;
}