计算数组中当前元素右侧的更多元素

时间:2017-03-31 03:10:02

标签: c arrays

我正在尝试计算元素数量大于数组右侧元素的数量。我的功能就在这里。

int* SurpassersKing(int input1_size, int* input1,int* output_size)
    {
        int i,k;
        int count[input1_size];
        for  (i = 0; i < input1_size; i++)
            count[i] = 0;


        for ( i = 0; i < input1_size; i++) 
        {
            for ( k = i + 1; k <input1_size; k++) 
                {
                        if (input1[i] < input1[k]) {
                                 count[i]++;
                        }
                }
        } 

        return count;
    }

这是我的函数,我在数组中计算更多的元素。

因此,在下面的代码片段中,我已经了解了main函数,声明了所有可靠的输出,例如output_size,计数数组,i,k作为数组的索引并打印内容,并调用计数函数。

int main() {
    int output_size;
    int* output;

    int ip1_size = 0;
    int ip1_i;
    scanf("%d\n", &ip1_size);
    int ip1[ip1_size];
    for(ip1_i = 0; ip1_i < ip1_size; ip1_i++) {
        int ip1_item;
        scanf("%d", &ip1_item);

        ip1[ip1_i] = ip1_item;
    }
    output = SurpassersKing(ip1_size,ip1,&output_size);
    int output_i;
    for(output_i=0; output_i < output_size; output_i++) {

        printf("%d\n", output[output_i]);

    }
    return 0;
}

但我没有得到所需的输出,所以我该怎样做才能改善这一点。

2 个答案:

答案 0 :(得分:1)

计算右侧数字计数的逻辑是正确的。唯一的问题是你无法从函数中返回类似的数组。请尝试以下方法:

替换

int count[input1_size];

int * count = malloc(input1_size*sizeof(int));

然后在main函数

添加

free(output);

就在return语句之前。

答案 1 :(得分:1)

但是,当我尝试编译时,你的代码有一些错误。

  1. 这是一个c代码,所以请使用#include

  2. 在函数SurpassersKing中,您试图返回不允许的数组计数。除非动态创建,否则永远不要返回局部变量。

  3. output_size永远不会被启动。

  4. 这是最终代码:

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <div ng-app="app" ng-controller="myCtrl">
      <select ng-model="quantity" ng-options="value as value for value in list"></select>
      <br>
      <select class="classname" ng-options="value as value for value in list | limitTo:quantity:0" ng-model="selectedItem">
        <!--<option ng-repeat="item in list | limitTo:quantity:0">{{item}}</option> -->
      </select>
      {{selectedItem}}
    </div>