2013-04-16 81 views
0

我試圖找到3個隊伍中有哪些在我的程序中有超過95%的最大頻率,但我遇到了幾個問題。首先,我創建了一個函數以便找到每個團隊的最大值。然後,我正在考慮將每個團隊的最大值保存到一個數組中,然後調用該函數以便找到該數組中的最大值,但是我無法按照我的想法使其工作。從我的結果來看,我似乎有內存分配問題。有什麼建議麼?很遺憾的形成......我是新來的C.陣列的最大值

編輯 我已經是

如果我添加了數字{99 98 99 30 30 95 20 96 99}

輸出

第一隊

[0-9]  0 
    ... 
    [95-100]  **3** 

最大是從行3 {99 98 99}

2nd row 0-9   0 
      ... 
      30-35  2 
      ... 
      95-100  **1** 
    the max is 1 
        from the row {30 30 95} 
3rd row 0-9   0 
      ... 
      20-25  1 
      ... 
      95-100  **2** 
the max is 2     from the row {20 96 99} 

,我想要做的事情就是找到3 teams.In這種特殊情況下的[3 1 2]這是會最大的最大的最大值是3。這就是爲什麼我決定將這些值存儲在一個數組中:)但是我有一些問題,因爲我無法正確存儲它們,並且在調用該函數以查找Whole max。

#include <stdio.h> 
#define S1 3 
#define COUNTER 20 
#define S2 3 

int max_array(int a[], int num_elements); 
int main(){ 
float A[S1][S2]; 
int i, j, k, l, low, high, max; 
int group[COUNTER] = {0}; 
int arr[S1] = {0}; 
for(i = 0 ; i < S1 ; i++){ 

    for(j=0; j<S2;j++){ 

     scanf("%f", &A[i][j]); 

    }         
} 

for(i=0;i<S1;i++){ 

    memset(group, 0, sizeof(group)); 

    for(j=0;j<S2;j++){ 

     ++group[(int)(A[i][j] - 1)/5] ; 
    } 
    printf("\n"); 
    printf(" GROUP||  RANGE||  FREQUENCY\n\n") ; 
    for(k = 0 ; k < COUNTER ; k++ ){            
     low = k * 5 ; 
     high = low + 5 ; 
     printf(" %2d|| %3d to %3d||  %d\n", k+1, low, high, group[k]); 

     if(k==19){ 
      max = max_array(group,COUNTER); 
      arr[i]=max; 
     } 
     } 
    printf("The max is %d\n", arr[i]); 
    }  
    for(l=0;l<S1;l++){ 
    printf("The max is %d\n", arr[i]); 
    } 
    getch();     
} 


int max_array(int group[], int num_elements){ 
int i,j, max; 
max=group[0]; 
for (i=1; i<num_elements; i++){ 
    if (group[i]>max && i==num_elements-1){ 
     max=group[i]; 
    } 
    } 
return(max); 
} 
+1

您應該正確縮進代碼以獲得答案。閱讀非常混亂。 – jazzbassrob

+0

這根本不可讀。 – 2013-04-16 18:29:37

回答

0
#include <stdio.h> 
#define S1 3 
#define COUNTER 20 
#define S2 3 

int max_array(int a[], int num_elements); 
int main(){ 
    float A[S1][S2]; 
    int i, j, k, l, low, high, max; 
    int group[COUNTER] = {0}; 
    int arr[S1] = {0}; 
    for(i = 0 ; i < S1 ; i++){ 

     for(j=0; j<S2;j++){ 

      scanf("%f", &A[i][j]); 

     }         
    } 

    for(i=0;i<S1;i++){ 

     memset(group, 0, sizeof(group)); 

     for(j=0;j<S2;j++){ 

      ++group[(int)(A[i][j] - 1)/5] ; 
     } 
     printf("\n"); 
     printf(" GROUP||  RANGE||  FREQUENCY\n\n") ; 
     for(k = 0 ; k < COUNTER ; k++ ){            
      low = k * 5 ; 
      high = low + 5 ; 
      printf(" %2d|| %3d to %3d||  %d\n", k+1, low, high, group[k]); 

      if(k==19){ 
       max = max_array(group,COUNTER); 
       arr[i]=max; 
      } 
     } 
     printf("The max is %d\n", arr[i]); 
    }  
    for(l=0;l<S1;l++){ 
     printf("The max is %d\n", arr[i]); 
    } 
return 0;      
} 


int max_array(int group[], int num_elements){ 
    int i,j, max; 
    max=group[0]; 
    for (i=1; i<num_elements; i++){ 
     if (group[i]>max && i==num_elements-1){ 
      max=group[i]; 
     } 
    } 
    return(max); 
} 
+0

幸運的是,即使我輸入值「0」我得到正確的頻率:) – user2154323

0

您需要包括string.h中使用memset的,正確的getch到GETC。

+0

一切工作正常,找到頻率:)問題是之後 – user2154323