-1

配列内の値の頻度を計算しようとしています。現在のエントリーは順調に進んでいると思いましたが、「カウント」を間違えているようです。アレイの周波数を正しく表示する方法についてセカンドオピニオンが欲しいです!これが私が持っているものです:

#include <stdio.h>

/************************************************************************/
/*                      Function: frequency                            */
/*                                                                     */
/*  Purpose:    Obtains the frequency of a number in an array          */
/*                                                                     */
/*                                                                     */ 
/*                                                                     */
/*  Parameters: theArray-The array in question                         */
/*              n- the size of the array                               */
/*              x- the number to search for frequency within the array */
/*                                                                     */
/*  Returns:    The frequency of a given number in an array              */
/*                                                                     */
/************************************************************************/

int frequency (int theArray [ ], int n, int x)
{
    int count = 0;
    int i;

    for (i = 0; i < n; ++i)
    {
        if ( theArray[i]=x)
        {
            count = count + 1 ;
        }      
        else
        {
            count = count ;
        } 
    }

      printf ("\nThe frequency of %i in your array is %i ",x,count);
  }

  int main ()
  {
      int i;    
      int theArray[] = {};
      int n;
      int x;


      printf ("Enter The Amount Of Numbers In Your Array: ");
      scanf("%i", &n);/*Stores Amound Of Numbers In The Array*/

      for (i = 0; i < n; ++i)
      {
          printf("\nEnter number for array: ");     
          scanf ("%i", &theArray[i]);
      }

      printf ("\nOK, Thanks! Now What Number Do You Want To Search For Frequency In Your Array? ");
      scanf("%i", &x);/*Stores Number To Search For Frequency*/

      frequency(theArray,n,x);

      return(0);  /* success */

  } /* main */
4

6 に答える 6

3

if ( theArray[i]=x)である必要があります==

そして全体else {count = count;}が冗長です。

そして、署名があなたがそうすると言っているとしても、あなたは実際にカウント(または他のもの)を返しません。

于 2013-03-06T01:52:09.533 に答える
3

タイプミスがあります:

if ( theArray[i] = x )

する必要があります:

if ( theArray[i] == x )

前者はifステートメントに設定さtheArray[i]x、常にtrueを返しますが、実行したいのは論理的同等性チェックである2番目のステートメントです。

ちなみに、あなたのelseステートメントも冗長であり、そのelse { count=count; }部分は必要ありません。さらに、関数は値を返さないため、戻り値をからに変更することをお勧めしintますvoid

于 2013-03-06T01:52:27.043 に答える
2

3つのこと

  1. if ( theArray[i]=x)  =ある必要があります ==

  2. 他のすべて{count = count;}は冗長です。

  3. 関数は次のようになりますvoid

于 2013-03-06T01:58:38.430 に答える
0

配列の作成後に要素を配列に追加することはできません。int theArray [] = {}; ...は空の配列です。

次のことを行う必要があります。

  1. 配列のサイズを尋ねる
  2. 配列を動的に作成します(malloc()を使用)
  3. 数字を追加する
  4. 配列をポインターとして周波数()に渡します
  5. 終了する前に配列を削除します(free()を使用)
于 2013-03-06T01:55:51.307 に答える
0
#include<stdio.h>
#include<conio.h>
#define MAX 10
int flag=0;
void display(int no,int cnt,int visi[]);

void main()
{
  int arr[]={1,1,1,2,3,4,2,2,3,1};
  int visited[MAX];
  int i,j,no,cnt=1;
  clrscr();
  for(i=0;i<10;i++)
  {
    no=arr[i];
    cnt=1;
    for(j=i+1;j<10;j++)
    {
      if(no==arr[j])
        cnt++;
    }
    display(no,cnt,visited);
  }
}

void display(int no,int cnt,int visited[])
{
  int static i;
  int j;

  if(flag==1)
    for(j=0;j<=i;j++)
    {
      if(visited[j]==no)
        return;
    }
  i++;
  flag=1;
  printf("\n%d=%d",no,cnt);
  visited[i]=no;
}
于 2015-11-02T08:49:57.377 に答える
-2
#include<stdio.h>

int main(){
    int n, t, i, j, arr[30],len, halflen,flag=0,count=0;

    printf("Enter number of elements to insert in an array:");
    scanf("%d",&len);
    printf("Enter elements to insert in an array:");
    for(i=0;i<len;i++){
        scanf("%d",&t);
        arr[i]=t;
    }
    printf("\n");

    /*****************************/
    for(i=0;i<len;i++){
        count=1;
        for(j=i+1;j<=len-1;j++){
            if(arr[i]==arr[j] && arr[i]!='\0'){
                count++;
                arr[j]='\0';
            }
        }
        if(arr[i]!='\0'){
            printf("%d is %d times.\n",arr[i],count);
        }
    }

    /*****************************/
    getch();
    return 0;
}
于 2015-03-05T06:52:04.030 に答える