[英]max of max of an array
我試圖在程序中找到3個團隊中哪一個具有最高頻率且百分比超過95%,但是遇到了幾個問題。首先,我創建了一個函數以查找每個團隊的最大值。 然后我考慮將每個團隊的最大值保存到一個數組中,然后再調用該函數以在該數組中找到最大值,但是我無法使其按我的意願工作。從我的結果來看,我似乎遇到了內存分配問題。 有什么建議么? 很抱歉,我是C的新手。
編輯我的輸出是
如果我加上數字{99 98 99 30 30 95 20 96 99}
一隊
[0-9] 0
...
[95-100] **3**
行{99 98 99}中的最大值是3
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個團隊中的最大值。在這種情況下,[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);
}
#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);
}
您需要包括string.h來使用memset,並將getch改成getc。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.