计算数组中当前元素右侧的更大元素 [英] Count greater elements on right side of a current element in an array
问题描述
我正在尝试计算大于数组右侧元素的元素数。
I am trying to count the number of elements greater than the element on the right side of the array. Here my function goes.
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;
}
这是我在函数中计算数组中更大元素的函数。
This is my function where I am counting greater elements in an array.
因此,在下面的代码段中,我编写了main函数,声明了所有像veriable一样的output_size,counting array,i,k作为数组的索引并打印了东西,并调用计数函数。
So in this following code snippet i have wriiten the main function , declaring all the veriable like output_size,counting array ,i ,k as an index for the arrays and printing the stuff , and calling counting function .
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;
}
但是我没有得到所需的输出,所以我该怎么做才能改善这一点
but i am not getting the output required so what can i do to improve this.
推荐答案
因此,您的代码在尝试编译时发现了一些错误。
Oso your code has a few errors i found when i tried to compile.
-
这是交流代码,因此请在函数SurpassersKing中使用#include
This is a c code so use #include
返回不允许的数组计数。除非它是动态创建的,否则切勿返回局部变量。
Inside the function SurpassersKing you are trying to return array count which is not allowed. Never return local variables unless it is dynamically created.
output_size不会初始化。
The output_size never gets initilized.
这是最终代码:
#include <stdio.h>
#include<stdlib.h>
int* SurpassersKing(int input1_size, int* input1)
{
int i,k;
int * count = (int*)malloc(input1_size*sizeof(int));
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;
}
int main() {
// your code goes here
int output_size;
int* output;
int ip1_size = 0;
int ip1_i;
int output_i;
printf("Enter the size:\n");
scanf("%d",&ip1_size);
int ip1[ip1_size];
for(ip1_i = 0; ip1_i < ip1_size; ip1_i++) {
scanf("%d",%ip1[ip1_i]);
}
output = SurpassersKing(ip1_size,ip1);
output_size = ip1_size;
for(output_i=0; output_i < output_size; output_i++) {
printf("%d\n",output[output_i]");
}
return 0;
}
这篇关于计算数组中当前元素右侧的更大元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!