簡體   English   中英

編寫我的代碼以查找模式,但給了我最大的數量

[英]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;
}

我也自己弄清楚了。 非常感謝你們對我的幫助。 這是我的新代碼。

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

我已經使用修改你的代碼ifelse組合來計算給定數量的出現的次數或else由計數器設置為一個開始。 最后,如果您可以檢查當前發生次數是否大於我們之前存儲的次數,並交換當前模式和大小。

#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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM