我正在尝试使用C解决给定数量的总线的最大平台数量。我遇到了错误并且卡在那里

时间:2017-01-30 07:33:36

标签: c arrays function sorting compiler-errors

我正在尝试为给定数量的总线解决最大数量的平台。我收到了一个错误并且卡在那里。

我收到错误:

  

“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;
    }

2 个答案:

答案 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