gpt4 book ai didi

c++ - 结构体(数组)中出现次数最多的数字

转载 作者:行者123 更新时间:2023-11-30 21:43:50 25 4
gpt4 key购买 nike

我无法找出我的程序的这一部分有什么问题,我想找出我的结构(数组)中出现次数最多的数字,但它只找到最后一个数字:/

void Daugiausiai(int n)
{
int max = 0;
int sk;
for(int i = 0; i < n; i++){
int kiek = 0;
for(int j=0; j < n; j++){
if(A[i].datamet == A[j].datamet){
kiek++;
if(kiek > max){
max = kiek;
sk = A[i].datamet;

}

}
}
}
}

ps。它只是我代码的一部分

最佳答案

您没有向我们展示足够的代码,但您很可能没有查看函数的真实结果。结果 sk 是函数的本地值,您不返回它。如果您有也名为 sk 的全局变量,则 Daugiausiai 不会触及它。

以同样的方式,您可以传递结构体数组中的元素数量,但可以处理全局结构体。 “封装”函数是一种很好的做法,以便它们接收其处理的数据作为参数并返回结果。因此,您的函数应该传递数组长度和数组并返回结果。

(这种封装并不适用于所有情况,但在这里,它的好处是您可以对同一结构磁带的许多不同数组使用相同的函数。)

在计数循环之后测试当前元素数量是否超过最大值也足够了。

将所有这些放在一起:

struct Data {
int datamet;
};

int Daugiausiai(const struct Data A[], int n)
{
int max = 0;
int sk;

for (int i = 0; i < n; i++){
int kiek = 0;

// Count occurrences
for(int j = 0; j < n; j++){
if(A[i].datamet == A[j].datamet) kiek++;
}

// Check for maximum
if (kiek > max) {
max = kiek;
sk = A[i].datamet;
}
}

return sk;
}

你这样调用它:

struct Data A[6] = {{1}, {2}, {1}, {4}, {1}, {2}};
int n = Daugiausiai(A, 6);

printf("%d\n", n); // 1

关于c++ - 结构体(数组)中出现次数最多的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29916459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com