我正在尝试为给定数量的总线解决最大数量的平台。我收到了一个错误并且卡在那里。
我收到错误:
“online_test.c:3:31:错误:预期';',','或')''到来之前'”。
任何人都可以在我犯错的地方帮助我吗?
#include<stdio.h>
static int findMinPlatforms(int[] arrivals, int[] departures, int bus){
int no_of_platforms=0,low,high,max,i,j,min,arrival_i,departure_i;
arrival_i=0;
departure_i=0;
for(i=0;((arrival_i<bus)&& (departure_i<bus));i++){
//if(i>0){
if (arrivals[arrival_i]<departures[departure_i]) {
no_of_platforms=no_of_platforms+1;
arrival_i+=1;
} else(arrivals[arrival_i]<departures[departure_i]) {
no_of_platforms=no_of_platforms-1;
departure_i+=1;
}
// }
}
return no_of_platforms;
}
int main (void){
int arrivals[]={901,941,951,1101,1530,1854};
int departures[]={911,1201,1121,1133,1906,2003};
int bus=6;
printf("%d",findMinPlatforms(arrivals,departures,bus));
return 0;
}
答案 0 :(得分:2)
这里的关键是学习如何阅读和理解编译器错误:
3:31
表示第3行,第31行。指向[]
。 arrivals
之前预期别的东西”也应该指出错误。换句话说,编译器告诉你:“我不知道你为什么键入[],这是无效的C,C语言希望你输入其他东西”。当然,错误是数组参数应该写为int arrivals[]
而不是int[] arrivals
。
答案 1 :(得分:0)
我已经完成了在给定时间找到最大数量的平台的逻辑。
#include<stdio.h>
static int findMinPlatforms(int arrivals[], int departures[], int bus){
int no_of_platforms=0,i,arrival_i,departure_i,max_platform=0;
arrival_i=0;
departure_i=0;
for(i=0;((arrival_i<bus)&& (departure_i<bus));i++){
//if(i>0){
if ((arrivals[arrival_i]<departures[departure_i])){
no_of_platforms=no_of_platforms+1;
if(no_of_platforms>max_platform){
max_platform=no_of_platforms;
}
//printf("i in array is %d\n",i);
// printf("no of gates %d\n",no_of_platforms);
// printf("least value for %d ind is %d and bus is %d\n",arrival_i,arrivals[arrival_i],bus);
// printf("arrival bool %d\n",(arrival_i<bus)&& (departure_i<bus));
if(arrival_i<bus){
arrival_i+=1;
}
// printf("least value for %d ind is %d and bus is %d\n",arrival_i,arrivals[arrival_i],bus);
}
if(arrivals[arrival_i]>departures[departure_i]){
no_of_platforms=no_of_platforms-1;
if(no_of_platforms>max_platform){
max_platform=no_of_platforms;
}
// printf("i in departure is %d\n",i);
// printf("no of gates %d\n",no_of_platforms);
// printf("least value %d ind is %d\n",departure_i,departures[departure_i]);
// printf("departure_i bool %d\n",(arrival_i<bus)&& (departure_i<bus));
if(departure_i<bus){
departure_i+=1;
}
// printf("least value %d ind is %d\n",departure_i,departures[departure_i]);
}
// printf("outside bool %d and %d\n",(arrival_i<bus), (departure_i<bus));
// }
}
return max_platform;
}
int main (void){
int arrivals[]={800,840,850,1000,1400,1700};
int departures[]={810,1100,1020,1030,1800,1900};
int bus=6;
printf("Maximum number of platforms is %d",findMinPlatforms(arrivals,departures,bus));
return 0;
}
//answer Maximum number of platforms is 3