写了我的代码来寻找模式,但给了我最大的数字
Wrote my code to look for a mode but gives me the largest number
我试图找到排序数组的模式,所以我写了下面的代码;但是,它给了我该数组中最大的数字。
谁能帮帮我?
typedef struct mode {
int self;
int size;
} mode;
mode findmode(int *arr, int size) {
mode x;
int i = 0;
int count = 1;
for (i = 0; i < size; i++) {
if (i > 1 && i < size) {
if (arr[i] == arr[i - 1]) ++count;
if (arr[i] != arr[i - 1]) {
x.size = count;
x.self = arr[i - 1];
count = 0;
++count;
}
if (arr[i] != arr[i + 1]) {
if (count > x.size) x.size = count;
x.self = arr[i];
}
}
}
return x;
}
我已经修改了您的代码,使用 if
和 else
组合来计算给定数字的出现次数,或者 else
通过将计数器设置为 1 重新开始。最后如果你可以检查当前出现次数是否大于我们之前存储的次数并交换当前模式和大小。
#include <stdio.h>
typedef struct mode
{
int self;
int size;
} mode;
mode findmode(int *arr, int size)
{
mode x;
x.self = arr[0];
x.size = 1;
int i;
int count = 1;
for (i = 1; i < size; i++)
{
if(arr[i - 1] == arr[i])
{
count++;
}
else
{
count = 1;
}
if(count >= x.size)
{
x.self = arr[i];
x.size = count;
}
}
return x;
}
int main()
{
int arr[20] = {1,1,1,4,4,4,4,5,5,5,5,5,5,6,6,7,7,7,8,8};
mode m = findmode(arr, 20);
printf("The mode is %d with a occurrence count of %d\n", m.self, m.size);
}
我也是自己想出来的。非常感谢你们帮助我。
这是我的新代码。
mode findmode(int *arr,int size)
{
mode x;
int i=0;
int count=1;
x.size=0;
for(i=0;i<size;i++)
{
if(i>0)
{
if(arr[i]==arr[i-1])
{
++count;
}
if (arr[i]!=arr[i-1])
{
if(count>x.size)
{x.size=count;
x.self=arr[i-1];}
count= 0;
++count;
}
}
}
return x;
}
我试图找到排序数组的模式,所以我写了下面的代码;但是,它给了我该数组中最大的数字。
谁能帮帮我?
typedef struct mode {
int self;
int size;
} mode;
mode findmode(int *arr, int size) {
mode x;
int i = 0;
int count = 1;
for (i = 0; i < size; i++) {
if (i > 1 && i < size) {
if (arr[i] == arr[i - 1]) ++count;
if (arr[i] != arr[i - 1]) {
x.size = count;
x.self = arr[i - 1];
count = 0;
++count;
}
if (arr[i] != arr[i + 1]) {
if (count > x.size) x.size = count;
x.self = arr[i];
}
}
}
return x;
}
我已经修改了您的代码,使用 if
和 else
组合来计算给定数字的出现次数,或者 else
通过将计数器设置为 1 重新开始。最后如果你可以检查当前出现次数是否大于我们之前存储的次数并交换当前模式和大小。
#include <stdio.h>
typedef struct mode
{
int self;
int size;
} mode;
mode findmode(int *arr, int size)
{
mode x;
x.self = arr[0];
x.size = 1;
int i;
int count = 1;
for (i = 1; i < size; i++)
{
if(arr[i - 1] == arr[i])
{
count++;
}
else
{
count = 1;
}
if(count >= x.size)
{
x.self = arr[i];
x.size = count;
}
}
return x;
}
int main()
{
int arr[20] = {1,1,1,4,4,4,4,5,5,5,5,5,5,6,6,7,7,7,8,8};
mode m = findmode(arr, 20);
printf("The mode is %d with a occurrence count of %d\n", m.self, m.size);
}
我也是自己想出来的。非常感谢你们帮助我。 这是我的新代码。
mode findmode(int *arr,int size)
{
mode x;
int i=0;
int count=1;
x.size=0;
for(i=0;i<size;i++)
{
if(i>0)
{
if(arr[i]==arr[i-1])
{
++count;
}
if (arr[i]!=arr[i-1])
{
if(count>x.size)
{x.size=count;
x.self=arr[i-1];}
count= 0;
++count;
}
}
}
return x;
}